gpt4 book ai didi

excel - DAX 筛选器上下文

转载 作者:行者123 更新时间:2023-12-04 22:19:42 29 4
gpt4 key购买 nike

我想知道这两个 DAX 表达式之间有什么区别,每个表达式都返回我需要的内容:

(1) =calculate([PctMkt], FILTER ( ALL ( BondDim), BondDim[Quality] = "HY" )) 
(2) =calculate([PctMkt], ALL(BondDim), BondDim[Quality] = "HY" )
DAX 引擎是否使这两个表达式等价? (2) 只是 (1) 的简写吗?另外,(1)会更快地计算吗?试图通过“破解”计算的度量来确保我不会在数据透视表中造成问题。这些措施允许用户向下钻取到较低粒度,同时将较高级别的数据保留在数据透视表的上下文中。

最佳答案

一个更简单、类似的问题是众所周知的。

CALCULATE (
[PctMkt],
BondDim[Quality] = "HY"
)
is the shortened equivalent of
CALCULATE (
[PctMkt],
FILTER (
ALL ( BondDim[Quality] ),
BondDim[Quality] = "HY"
)
)

你的公式需要更多的思考。
当 ALL 用作 CALCULATE 的参数时,它只删除过滤器(如 REMOVEFILTERS )而不是充当表表达式。
ALL ( < table > )用作 FILTER 的参数,它必然是一个表表达式。
我给出的第一个链接详细说明了这种区别如何产生重要影响。我将在这里提供另一个示例:
假设 MarketDimBondDim 具有一对多关系(并且不是双向的) ID每个列和表格如下:
  BondDim          MarketDim

Quality ID ID Pct
------------- ----------
HY 1 1 5%
VY 1 2 10%
XY 2 3 20%
假设 [PctMkt] := MAX ( MarketDim[Pct] )然后,在您的第一个公式中 (1) , FILTER 参数如下表:
Quality  ID
-------------
HY 1
因此, (1) 的结果只能是 5% (或空白)自 ID = 1是唯一的选择。
在你的第二个公式 (2) ,自 ALL ( BondDim ) 以来没有表参数仅删除过滤器和 BondDim[Quality] = "HY"仅作用于单个列。没有表参数,因为 MarketDim过滤器 BondDim但反之亦然(因为它是单向关系),这些列过滤器参数都对我定义的度量没有任何影响(尽管它可能对您的实际度量有影响)。
因此, (2) 的结果与 CALCULATE ( [PctMkt] ) 相同,这将是 20%除非有过滤 MarketDim排除 ID = 3 .
注意:此简化为 (2)如果 [PctMkt] 则不成立在 BondDim 上运行由 BondDim 过滤的列或任何表列在你的模型中。 IE。过滤器在关系中传播“下游”,而不是“上游”。

关于excel - DAX 筛选器上下文,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65054984/

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