gpt4 book ai didi

powerbi - 带和不带 FILTER 的 DAX 计算函数

转载 作者:行者123 更新时间:2023-12-04 00:53:56 24 4
gpt4 key购买 nike

CALCULATE的结果有什么不同函数,如果我们使用和不使用 FILTER 函数。假设我们有这两个措施:

Measure1 = CALCULATE([X], 'FactTable'[Color]="Red")

Measure2 = CALCULATE([X], FILTER('FactTable', 'FactTable'[Color]="Red")

更新

有没有办法使用其他函数修改Measure2,比如 ALL , 或 ALLSELECTED ,以便它返回与 Measure1 完全相同的结果?

最佳答案

不仅结果,而且获得这两种测量结果的方式也不相同。

我创建了两个类似于您的示例的措施来测试这一点:

TestAvgNoFilter = CALCULATE([PrcAvg]; cal[ReadDate]=DATE(2018;05;23))
TestAvgFilter = CALCULATE([PrcAvg]; filter(cal; cal[ReadDate]=DATE(2018;05;23)))

当我简单地将它们都扔进数据透视表而没有任何附加字段或切片器时,当然它们都显示相同的结果:

pic1

然而:
  • 使用 FILTER具有显着的性能影响,可以清楚地看到查询计划和存储引擎与公式引擎的利用率。它创建了额外的临时表,它需要与来自报表/数据透视表本身(行、列、切片器)的现有过滤器“交互”。对于单个单元格中的简单平均值,您不会注意到任何东西,但是如果您的 [x] 度量本身很复杂并且有许多“初始”过滤器,则计算时间的差异可能很大。
  • FILTER保留和迭代初始过滤器上下文,而过滤器表达式直接用于 CALCULATE忽略它。看看会发生什么,当我将 ReadDate 添加到数据透视表时:

  • pic2

    这就是为什么没有 FILTER的措施更快:它不关心列中的日期 - 它已经计算了一个“真实”值,而测量值是 FILTER针对每一行的初始过滤器评估自身。

    两列中的结果都可以被认为是正确的 - 这实际上完全取决于解释以及您如何命名度量;)。

    作为一般规则,我建议您不要使用 FILTER当你不需要的时候。在真正需要的时候保存它的电源。

    关于powerbi - 带和不带 FILTER 的 DAX 计算函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50506030/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com