首页 文章

使用Measures时忽略PowerBI Visual Level Filter

提问于
浏览
1

我已经做了一个我似乎无法弄清楚的情景 . 有一个PBIX here,下面是一个屏幕截图 . 我知道我在PBIX中所做的工作是不正确的,但我不知道我需要添加什么 .

查看图表,当我移动日期滑块时,总CountOfMatches会使用下面的度量进行相应调整 . 都很开心

EndedContracts = COUNTROWS(Contracts)

Screen Shot

但是,当我更新EndedContracts上的可视化级别过滤器以仅显示少于两个已结束 Contract 的日期时,总数不会相应地进行调整 .

如何使用CountOfMatches度量来考虑应用于EndedContracts度量的可视级别过滤器?如果我在视觉上添加总计,这可以按预期工作,但这个示例是完整解决方案的抽象,它处理1000个客户并且单独的总数是理想的 .

我还尝试将EndedContracts度量移动到页面级过滤器,但PowerBI不会接受它 .

1 回答

  • 1

    Why is Power BI not accepting EndedContracts as a Page Level Filter?

    EndedContracts是一种度量,因此其显示值取决于它的分解方式 . 如果你根本不打破它,那么显示的值是5.这就是Card视觉效果所显示的 .

    在您的表格中,它的分解方式取决于您选择的列:您按日期过滤,而不是按客户过滤 . 对于任何给定日期,EndedContracts的数量是已知的 . 2017年1月3日,有3份已完成的合约 . 将EndedContracts的数量过滤到小于2将过滤此日期 .

    要证明细分完全基于表中的列,请尝试将customer列添加到表中 . 如果您这样做,那么2017年1月3日将不再被过滤掉 . 这是因为您现在按日期 and by customer 分解数字,并且没有与2个或更多EndedContracts的日期/客户组合,因此没有任何过滤掉 .

    您无法在Card视觉或页面过滤器中使用度量作为过滤器的原因是因为过滤器没有隐含的方式来了解您希望如何分解度量 . 你想根据总数进行过滤吗?这是不太可能的 . 您想根据总日期过滤吗?客户总数?总日期和客户? Power BI不知道 .

    How do you work around this?

    您需要做的是找到一种方法告诉Power BI如何以可过滤的方式分解EndedContracts总数5 .

    一种方法是通过计算表和SUMMARIZECOLUMNS语句 . 在“建模”选项卡中,选择“新建表”,然后尝试以下操作:

    Ended Contracts by Date =
    SUMMARIZECOLUMNS (
        Contracts[EndDate],
        "Total Ended Contracts", [EndedContracts]
    )
    

    这将创建一个计算表,显示EndDate的EndedContracts数(忽略客户) . 它是屏幕截图中表格的DAX等价物 . (如果您熟悉SQL,SUMMARIZECOLUMNS就像SQL中的GROUP BY一样 . )

    获得此计算表后,您可以按日期将其加入原始 Contract 表,然后使用“总结束 Contract ”列作为页面过滤器 . 它将完全按照您的意愿运行,使用2个或更多EndedContracts过滤掉所有日期 .

    Diagram showing the join between the calculated table and the original table

    为什么这样做,但措施没有?因为与度量不同,您已明确指定了如何分解度量(在本例中为按日期) . 您已经实例化了该表,现在对其进行过滤就像对数据模型中的任何其他表/列进行过滤一样 .

    我希望我的演练有助于解释为什么Power BI不直观,以及如何解决它 . 如果我说的话令人困惑,请告诉我 . 感谢您提供示例数据模型的链接 . 这非常有帮助 .

    Sidenote: Why can the CountOfMatches measure not see the visual level filter applied to the table?

    页面上的每个视觉都被视为独立 . 同一措施在同一页面上以不同方式分解(例如按日期,按客户,按销售区域划分)并非不合理 . 视觉级别过滤器可以为您提供视觉效果之间的灵活性:例如:您可以将一个图表过滤为MTD,但在另一个图表中显示YTD编号 .

    每当您希望将过滤器应用于多个视觉效果时,您需要执行页面级过滤器,或者对每个视觉应用相同的过滤器,这当然是您尝试做的 . 遗憾的是,无论是网页级过滤器还是Card visual上的可视级别过滤器都不会接受度量 . 但是,我的上述解决方案对两者都有效 .


    参考文献:

    SUMMARIZECOLUMNS:https://msdn.microsoft.com/en-us/library/mt163696.aspx

相关问题