1

尝试在 Power BI Desktop 中使用自定义视觉对象创建组织结构图,要求是显示带有过滤数据的图表,这些数据由Slicer应用于部门列。

我遇到了自定义视觉(符合逻辑)的限制,要在视觉中获得正确的图表,数据集必须有一个根节点,在我的场景ReportsTo列中应该null标识为根节点。

管理在 SQL 视图中使用和逻辑在每个部门中创建Reportsto列。但是这个已经处理过的数据,我在过滤器选择期间寻找一些东西,这样当用户在切片器自定义视觉中选择 2 个部门时不会崩溃。nullROW_NUMBER () OVER (PARTITION BY EmpDepartment Order by EmpGrade descCASE

我尝试在 Power BI 桌面中遵循 DAX 来获得基于Grade过滤数据的 RANK,不幸的是,DAX作为Measure而不是作为计算列工作,并且使用该措施我在尝试使用计算列时无法获得预期结果IF([RANK]=1,BLANK(), ('Table'[ReportsTo]))

注意:在 Power BI Desktop - 编辑查询页面中添加了索引列

RANK = 
MINX (
    FILTER (
        SELECTCOLUMNS (
            ALLSELECTED ('Table'),
            "index", 'Table'[Index],
            "rank", RANKX ( ALLSELECTED ( 'Table' ), 'Table'[Grade],, DESC, DENSE )
        ),
        [index] = MAX ( 'Table'[Index] )
    ),
    [rank]
    )
)

这是示例数据,如下表所示,当部门使用IT(通过切片器)过滤时,EmpID 107ReportsTo_2将是基于列的根节点。But visual won't work when 2 departments selected.

+-----------+------------+-------+---------------+---------+--------------+
| EmpID     | ReportsTo  | Grade | EmpDepartment | EmpName | ReportsTo_2
+-----------+------------+-------+---------------+---------+--------------+
| 101       | 107        | A1    | IT            | Emp1    | 107         
| 102       | 107        | A1    | IT            | Emp2    | 107        
| 103       | 107        | A1    | IT            | Emp3    | 107        
| 104       | 108        | A2    | Proc.         | Emp1    | 108        
| 105       | 108        | A2    | Proc.         | Emp1    | 108        
| 106       | 108        | A2    | Proc.         | Emp1    | 108        
| 107       | 109        | B1    |  IT           | Mgr1    |
| 108       | 109        | B1    | Proc.         | Mgr2    |
| 109       | 110        | C2    | Management    | Director|
| 110       |            | D9    | Sr.Management | CEO     |
+-----------+------------+-------+---------------+---------+--------------+

预期结果:我的想法是在过滤数据中获得最高null值(按部门过滤)。ReportsTo_2Grade

感谢您提出实现这一目标的建议。谢谢

评论中要求的用于澄清的附加信息

使用以下视觉效果:
自定义视觉 1
自定义视觉 2

场景:

  1. 当过滤多个部门(没有可用的根节点)时,如果我ReportsTo_2用作父级,则会显示错误“多个根节点”:图片链接
  2. 当部门没有应用过滤器时:图片链接

与自定义视觉 2 相同的场景:

  1. 图片链接
  2. 图片链接

附加说明 2:
我遇到的主要问题,作为Measure ,我们可以轻松获得预期结果,但作为计算列,相同的表达式没有给出预期结果。
图片链接

4

1 回答 1

0

我想我理解你的问题,你需要的衡量标准如下。但是请注意您的视觉效果的限制。他们都明确需要一个起始节点。不允许有多个或没有起始节点。因此,即使采用此措施,也要同时选择 IT 和 Proc。在您的过滤器中将导致错误,因为它为两个视觉对象提供了两个可能的起始节点。此措施将解决没有起始节点的问题,因为它总是会导致您的 ReportsTo_2 中至少有一个空白值。

当明确需要时,您可以用 BLANK() 替换“”,我没有在视觉效果上进行测试。

ReportsTo_2 =

var _highestSelectedRank = CALCULATE( MAX ( 'Table'[Grade] ) ; ALLSELECTED( 'Table' ) )

RETURN
    IF (
        MAX( 'Table'[Grade] ) = _highestSelectedRank ;
        "" ;
        MAX ( 'Table'[ReportsTo] )
    )

根据评论更新:或强制度量表现得像计算列

ReportsTo_2 =

var _highestSelectedRank = CALCULATE( MAX ( 'Table'[Grade] ) ; ALLSELECTED( 'Table' ) )

RETURN
    MAXX (
        'Table' ; 
        IF (
            'Table'[Grade] = _highestSelectedRank ;
            "" ;
            'Table'[ReportsTo]
        )
    )
于 2019-08-06T08:14:42.307 回答