开发手册 欢迎您!
软件开发者资料库

Excel DAX - 执行复杂计算

Excel DAX执行复杂计算 - 从简单和简单的步骤学习Excel DAX,从基本到高级概念,包括概述,计算列,计算字段/度量,编辑计算字段,删除计算字段,语法,运算符,标准参数,功能,了解DAX功能,评估上下文,公式,更新DAX公式的结果,更新数据模型中的数据,重新计算DAX公式,排除DAX公式重新计算,公式错误,时间智能,过滤函数,方案,执行复杂计算,工作使用文本和日期,条件值和错误测试,使用时间智能,排名和比较值。

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函数最多支持两级嵌套循环.