power bi DAX 分层 table 名称串联

power bi DAX hierarchical table concatenation of names

这两天我遇到了一个问题,我无法解决,所以我来这里寻求帮助... 我有一点 dax,它基本上采用分层 table(整数)的路径,并在路径中首先采用 2 的字符串名称。

我使用的名字:

DisplayPath =
    var __Path =PATH(ParentChild[id], ParentChild[parent_id])
    var __P1 = PATHITEM(__Path,1) var __P2 = PATHITEM(__Path,2)
    var l1 = LOOKUPVALUE(ParentChild[Place],ParentChild[id],VALUE(__P1))
    var l2a = LOOKUPVALUE(ParentChild[Place],ParentChild[id],VALUE(__P2))
    var l2 = if(ISBLANK(l2a), "", " -> " & l2a) 
return CONCATENATE(l1,l2)

我的问题是...我不知道路径中的索引数量,可以从 0 到我猜 15... 我已经尝试了一些事情,但无法找到解决方案。 首先,我添加了一个名为 nbrItems 的新列,用于计算路径列表中的项目数。

两列:

然后我添加了一段代码,根据路径列表中的项目数模拟 for 循环,我想在其中加入

  1. 获取参数名称
  2. 将它们连接成一个字符串,我可以 return 并得到
string = 
    var n = 'HIERARCHY'[nbrItems]
    var mytable = GENERATESERIES(1, n)
    var addedcolumn1 = ADDCOLUMNS(mytable, "nom", /* missing part: get name */)
    var addedcolumn2 = ADDCOLUMNS(addedcolumn1, "string", /* missing part: concatenate previous concatenated and new name */)
    var mymax = MAXX(addedcolumn2, [Value])
RETURN MAXX(FILTER(addedcolumn2, [Value] = mymax), [string])

完整 table:

提前感谢您的帮助!

好吧,经过一些研究和大量的尝试和错误...我想出了一个很好而简单的解决方案: 最初的问题是我有一个分层 table ,但是所有数据都在同一个 table.

like so

我所做的是,使用此 dax 添加一个新的“父”列:

parent = 
    var a = 'HIERARCHY'[id_parent]
    var b = CALCULATE(MIN('HIERARCHY'[libelle]), FILTER(ALL('HIERARCHY'), 'HIERARCHY'[id_h] = a))
RETURN b

这从 id_parent(参考屏幕)获取父名称。

然后我可以只使用路径功能,而不是在 id 上,而是在名称上......像这样:

path = PATH('HIERARCHY'[libelle], 'HIERARCHY'[parent])

这让问题变得简单了,因为我不需要在这之后用那里的名字替换 id...

最后为了让它看起来更漂亮,我使用了一些替换来移除管道:

formated_path = SUBSTITUTE('HIERARCHY'[path], "|", " -> ")

final result