首页 > 解决方案 > Power BI 显示标题列表而不是 id

问题描述

我有一个以 1:* 关系引用其他表的表。这些表是从 Sharepoint 中检索的,并且该表引用了由“;”分隔的 id 在参考栏中。我想显示标题而不是引用表的 id。例子:

tableA
Id title tableBId
1   asd    1; 2;

tableB
Id title
1   Acb
2   bcb 

resultTableA
Id title tableBTitle
1   asd   Acb; bcb;

标签: powerbipowerquery

解决方案


您可以通过使用以下代码在表 A 中创建自定义列来实现此目的。

这对每一行的作用是:

  1. 计算 tableBId 列中有多少分隔值
  2. 创建 tableBId 列的临时版本,替换“;”和“;” 用“|”
  3. 创建从 1 到分隔值计数的一系列数字
  4. 从该系列数字中获取 BTitles 列表,从临时版本中获取片段(使用“|”),然后将这些 ID 查找到表 B 中。
  5. 从列表中返回标题的串联。

    tableBTitle = 
    VAR DelimCount = LEN([tableBId]) - LEN(SUBSTITUTE([tableBId], ";", ""))
    VAR PathIDs = SUBSTITUTE(SUBSTITUTE([tableBId], "; ", "|"), ";", "|")
    VAR Series = GENERATESERIES(1, DelimCount)
    VAR BTitles = ADDCOLUMNS(Series, "BTitle", LOOKUPVALUE(tableB[title], tableB[Id], VALUE(PATHITEM(PathIDs, [Value]))))
    RETURN
        CONCATENATE(CONCATENATEX(BTitles, [BTitle], "; "), ";")
    

这是通过使用此处此处找到的部分创建的。

CONCATENATEX 在此处了解更多信息。


推荐阅读