DAX公式可以执行复杂的计算,涉及自定义聚合,过滤和条件值的使用.您可以使用DAX : 执行以下操作;
为数据透视表创建自定义计算.
将过滤器应用于DAX公式.
有选择地删除过滤器以创建动态比率.
使用外循环中的值.
为数据透视表创建自定义计算
DAX函数CALCULATE和CALCULATETABLE功能强大且灵活.它们对于定义计算字段很有用.这些DAX函数使您可以更改将执行计算的上下文.您还可以自定义要执行的聚合或数学运算的类型.
CALCULATE函数
CALCULATE(< expression>,[< filter1> ],[< filter2>] ...)
CALCULATE函数在由零个或多个指定过滤器修改的上下文中计算给定表达式.
如果您的数据已被过滤,则CALCULATE函数会更改过滤数据的上下文,并在过滤器指定的新上下文中计算表达式.这意味着,将删除指定列上的任何现有过滤器,并替换应用过滤器参数中使用的过滤器.
示例
假设您需要显示按国家/地区名称进行运动过滤的奖牌百分比.您的计算应该获得覆盖您在数据透视表中的国家/地区应用的过滤器的百分比值.
定义计算字段 - 奖牌计数的百分比,如以下屏幕截图所示.
使用此DAX公式,结果表中的所有行都将在CALCULATE函数中考虑,并且过滤器包含ALL函数.这样,您就可以得到分母中的总计数.
您的数据透视表将如以下屏幕截图所示.
在上面的屏幕截图中,Country被过滤到USA,前18个值显示在数据透视表中.接下来,您可以动态过滤数据透视表中的值.但是,您使用的自定义DAX公式计算将是正确的.
CALCULATETABLE函数采用值表并执行与CALCULATE函数相同的操作.
过滤公式中的数据
您可以在DAX公式中创建过滤器,从源数据中选择值以用于计算.您可以通过定义过滤器表达式并将其与作为DAX公式输入的表一起使用来完成此操作.
过滤器表达式使您可以获取源数据的子集.每次更新DAX公式的结果时都会动态应用过滤器,具体取决于数据的当前上下文,并且可以确保准确和预期的结果.
过滤器表达式通常包含一个DAX过滤器函数,该函数仅返回表的选定行,然后可以将其用作您用于数据聚合的另一个DAX函数的参数.
示例
以下屏幕截图显示了计算字段的定义,该字段仅为夏季运动提供奖牌数.
使用此计算字段,数据透视表看起来如下面的屏幕截图所示.
正如您所看到的,右侧数据透视表中的值与新计算字段的值匹配at位于左侧的数据透视表中,显式应用季节字段上的过滤器.
注意 : DAX过滤器和值函数返回一个表,但永远不会将表或行直接返回到数据模型,因此总是嵌入到另一个DAX函数中.
有关这些DAX函数的详细信息,请参阅到章节 - DAX过滤器函数.
动态添加和删除过滤器
您在数据透视表中使用的DAX公式可能会受到数据透视表上下文的影响.但是,您可以通过添加或删除过滤器来有选择地更改上下文.您可以使用DAX函数ALL和ALLEXCEPT动态选择行,而不管数据透视表上下文.
此外,您可以使用DAX函数DISTINCT和VALUES返回不同的值.
使用外循环中的值
您可以使用前一循环中的值创建一组使用DAX EARLIER函数的相关计算.此DAX函数最多支持两级嵌套循环.