揭示DAX中KEPFILTERS的秘密

Unveiling the secret of KEPFILTERS in DAX.

DAX中的KEEPFILTERS()函数是一个被低估的函数。因此,我决定深入研究这个函数,并为您提供一些关于这个函数和一个令人惊讶的效果的有趣细节。

Ian Tuck在Unsplash上的照片

介绍

当我们在DAX中使用CALCULATE()函数时,通常会添加一个简单的过滤器,如下所示:

Product[Color] = “Green”

这个过滤器将用值“Green”替换列[Color]上的任何现有过滤器。

但有时,我们需要进一步保留表或列上的现有过滤器以执行一些有趣的计算。

有时,我们从度量值得到了错误的结果,而且我们无法理解为什么会发生这种情况。

这些都是KEEPFILTERS()函数可以帮助我们的情况。

源查询

首先,让我们定义我们想要处理的查询。

我想获取按颜色分类的在线销售清单:

DEFINE  MEASURE 'All Measures'[Online Sales] = SUMX('Online Sales', [UnitPrice]*[SalesQuantity])  EVALUATE     SUMMARIZECOLUMNS('Product'[Color]                      ,"Online Sales", [Online Sales]                      )

我使用SUMX将[UnitPrice]乘以[SalesQuantity]。

结果如下:

当我使用CALCULATE()添加过滤器时,查询如下所示。

// 仅绿色销售DEFINE  MEASURE 'All Measures'[Online Sales] = SUMX('Online Sales', [UnitPrice]*[SalesQuantity])   MEASURE 'All Measures'[All Green Sales] =                 CALCULATE([Online Sales]                             ,'Product'[Color] = "Green"                            ) EVALUATE  SUMMARIZECOLUMNS('Product'[Color]                    ,"Online Sales", [Online Sales]                    ,"Green Sales", [All Green Sales]                    )

结果如下: