【问题标题】:PBI/DAX - Filter on selected leaf nodePBI/DAX - 在选定的叶节点上过滤
【发布时间】:2022-12-02 23:22:11
【问题描述】:

我有一个包含 2 列的表:sourcetarget。样本:

Source Target
Company Plant A
Company Plant B
Company Plant C
Plant A Building X
Plant A Building Y
Plant B Building R
Plant B Building S

我创建了列 isLeaf 来检查叶节点(真或假):

IsLeaf = 
    VAR CurrentNode = FullHierarchy[Target]
    RETURN CALCULATE (
        COUNTROWS ( FullHierarchy ),
        ALL ( FullHierarchy ),
        FullHierarchy[Source] = CurrentNode
    ) = 0

此外,路径是使用 PATH() 函数计算的。

接下来,我创建了断开连接仅包含叶节点的表 Leafs

Leafs = 
    SELECTCOLUMNS(
        FILTER(FullHierarchy, FullHierarchy[IsLeaf]),
        "LeafNode", FullHierarchy[Target]
    )

这是结果:2 个断开连接的表。

我的目标是拥有 2 个视觉效果:一个基于 Leafs 的切片器和一个基于 FullHierarchy 的表格。选择叶子仅显示直接或间接连接到它的项目(即它的路径的一部分)。

这样做的声明类似于:

PATHCONTAINS(
    LOOKUPVALUE(FullHierarchy[Path],
                FullHierarchy[Target]
                [Selected Node]),
    FullHierarchy[Target])

上面的语句将查找所选叶节点的路径,然后检查表中的节点是否是其中的一部分,以决定是否显示它。

我尝试了无数种变体,但无法实现。任何想法、建议等将不胜感激!谢谢!

示例 pbix 文件可用here

更新

澄清一下,选择叶节点应该返回所有连接的节点,一直到顶部(即完整谱系)。

例如,选择机器E2应该返回

  • 机器E2
  • E 部分
  • A栋
  • C厂
  • 公司

更直观:

【问题讨论】:

    标签: powerbi dax


    【解决方案1】:

    添加新措施如下:

    Measure = 
    VAR vals = VALUES(Leafs[LeafNode])
    VAR check = SELECTEDVALUE(FullHierarchy[Path])
    RETURN 
    SUMX(vals, IF(SEARCH(Leafs[LeafNode],check,,BLANK())>0,1))
    

    【讨论】:

    • 谢谢,但这不是我要找的。这只返回直接连接到它的节点,而目标是返回所有直接和间接连接的节点。我已经更新了原始帖子以进一步澄清它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多