DAX中CALCULATE函数筛选器是否按输入顺序处理及调整依赖顺序
DAX CALCULATE 函数筛选参数执行顺序问题解答
首先给出你提到的DAX表达式:
CALCULATE( SUM('Sales Aggregated'[Total Sales]), ISBLANK('Customer Brand'[Age]), 'Calendar'[Fiscal Week Description] IN {"Sep Wk 4 2021", "Sep Wk 3 2021"}, 'Customer Brand'[Brand First Purchase Date] IN VALUES('Calendar'[Fiscal Day Key]) )
问题1:CALCULATE函数的筛选参数是否严格按照输入顺序执行处理?
答案是否定的。
DAX属于声明式语言,你只需要定义你想要的计算规则,不需要指定执行顺序。CALCULATE的所有普通筛选参数本质是共同组成筛选上下文的交集,输入顺序不会影响最终的计算结果。只有当筛选参数使用了KEEPFILTERS、REMOVEFILTERS这类上下文修饰函数时,才会有对应的上下文叠加/移除的逻辑,但也不是单纯按照输入顺序线性执行。
问题2:Power BI是否会自动识别到第4个筛选条件依赖第3个筛选条件的结果,进而调整处理顺序?
会自动调整处理顺序。
你示例中的第4个筛选条件用到了VALUES('Calendar'[Fiscal Day Key]),这个函数的返回结果完全依赖Calendar表当前的筛选上下文。DAX引擎会自动识别参数之间的依赖关系,先完成对Calendar表的筛选(即第3个参数的规则),得到符合要求的Fiscal Day Key集合之后,再执行第4个条件的匹配逻辑。哪怕你手动把第4个参数调整到最前面的位置,最终的计算结果也不会有任何变化。
内容的提问来源于stack exchange,提问作者Randy Minder
相关产品推荐
相关产品推荐

