创建计算组

通过允许将 DAX 表达式定义为应用于模型中现有度量值的计算项,计算组可以显著减少必须创建的冗余度量值数。 有关计算组的详细信息,请参阅计算组一文。

添加新的计算组

打开本地模型后,在 Power BI Desktop 中,导航到“模型”视图并选择功能区中的“计算组”按钮。 如果尚未在模型资源管理器中,“数据”窗格将打开到“模型”视图。

功能区中计算组按钮的屏幕截图。

如果阻止隐式度量值属性处于关闭状态,系统会提示你打开一个对话框窗口以启用计算组的创建。

提示启用隐式度量值的对话框窗口的屏幕截图。

隐式度量值发生在报表视图中,直接在视觉对象中使用数据窗格中的数据列。 视觉对象允许将其聚合为 SUM、AVERAGE、MIN、MAX 或其他一些基本聚合,这将成为隐式度量值。 创建计算组会阻止创建此类隐式度量值,方法是不再在“数据”窗格中显示数据列旁边的求和符号,并阻止将数据列直接添加到聚合轴上的视觉对象或值。 视觉对象中已创建的现有隐式度量值将继续工作。 必须启用“阻止隐式度量值”属性,因为计算项不适用于隐式度量值。 计算项仅适用于度量值或显式度量值。

报表视图和隐式度量值创建的屏幕截图。

在创建新度量值并定义 DAX 表达式以聚合数据列时,将发生度量值或显式度量值。 显式度量值还可以有条件逻辑和筛选器,充分利用 DAX 可以执行的操作。 教程:了解如何在 Power BI Desktop 中创建自己的度量值

注意

如果具有不希望计算项更改的度量值,则可以按度量值名称忽略显式度量值的方式创建计算项。

选择“是”,或者如果已启用不推荐的隐式度量值属性,则会添加一个计算组,并开始在 DAX 公式栏中定义第一个计算项的 DAX 表达式。

SELECTEDMEASURE() 是 DAX 函数,充当计算项将应用到的度量值的占位符。 可以从其文章中了解 SELECTEDMEASURE DAX 函数

DAX 编辑栏和计算组的屏幕截图。

时间智能示例

Analysis Services 表格模型中的计算组有一个时间智能示例,可用于填充某些计算项。 该示例可以添加到按日期和标记为日期表的 Date 表的任何模型,也可以从 DAX 示例模型下载 Adventure Works DW 2020 PBIX - DAX。

重命名计算组

若要重命名计算组,请在“数据”窗格中双击它,也可以选择它并使用“属性”窗格。

如何重命名计算组的屏幕截图。

重命名计算组列

若要重命名计算组列,请在“数据”窗格中双击它,也可以选择它并使用“属性”窗格。 选择的列是在视觉对象或切片器中用于应用特定计算项的列。

如何重命名计算组列的屏幕截图。

重命名计算项

第一个计算项创建为 SELECTEDMEASURE(),因此也可以双击或使用“属性”窗格重命名它。

如何重命名计算项的屏幕截图。

创建其他计算项

若要创建其他计算项,可以使用“计算项”部分或计算组本身的右键单击上下文菜单,然后选择“新建计算项”,或使用“计算项”部分的“属性”窗格。

如何创建新计算项的屏幕截图。

添加所有时间智能计算项后,计算组如下图所示。

添加所有时间智能项后计算组的屏幕截图。

请注意指示错误的红色三角形图标。 存在这些错误是因为示例 DAX 表达式使用名为 DimDate 的 Date 表,因此我需要更新 DAX 表达式以改用名称 Date。 下图显示了更正之前的 DAX 表达式。

不正确的 DAX 表达式的屏幕截图。

对 DAX 表达式进行更正后,错误就会消失。

更正后的 DAX 表达式的屏幕截图。

在计算项中对每个错误进行更正后,不再显示红色三角形警告图标。

计算项区域中更正后的 DAX 表达式的屏幕截图。

重新排序计算项

若要以所需的任何逻辑方式对计算项重新排序,可以在“属性”窗格中选择“计算项”部分,或右键单击计算项的上下文菜单,在列表中向上或向下移动计算项。

重新排序计算项的屏幕截图。

将动态格式字符串添加到计算项

默认情况下,计算项使用基础度量值格式。 我们可能需要改为将 YOY% 显示为百分比。 为此,请选择 YOY% 计算项,然后在属性窗格中打开“动态格式字符串”,这样就可以指定 DAX 表达式来创建格式字符串。 对于此示例,它不需要任何条件元素,因此,仅 #,##0.00% 将应用此计算项时的格式更改为百分比,如下图所示。

更改基础数据项的格式的屏幕截图。

在报表中使用计算组

若要在报表中使用新的计算组,请转到报表视图,创建矩阵视觉对象并添加以下内容:

  1. 日期表到行的月份
  2. 从时间智能计算组到列的时间计算
  3. Orders 度量值到值

注意

如果未在模式下创建度量值 Orders,则可以使用不同的度量值或转到功能区,并使用此 DAX 表达式选择“新建度量值”。

Orders = DISTINCTCOUNT('Sales Order'[Sales Order])

下图显示了生成视觉对象。

在报表中使用计算组的屏幕截图。

矩阵视觉对象中列的计算项显示按每个计算项分组的度量 Orders 的顺序。 还可以通过将计算组列添加到切片器视觉对象,将单个计算项应用于多个度量值。

将单个计算项应用于多个度量值的屏幕截图。

在度量值中使用计算项

可以使用 DAX 表达式创建新度量值,该表达式将使用特定度量值的计算项。

若要创建 [Orders YOY%] 度量值,可以将计算项与 CALCULATE 配合使用。

Orders YOY% = 
    CALCULATE(
        [Orders],
        'Time Intelligence'[Time Calculation] = "YOY%"
    )

设置计算组优先级

最后,如果将其他计算组添加到模型,并且想要指定它们应用于度量值的顺序,则可以在“计算组”部分属性窗格中调整计算组优先级,如下图所示。

设置计算组优先级的屏幕截图。

可以在 Analysis Services 表格模型中的“计算组”文章中了解有关计算组优先级的详细信息。

以下文章提供了更多有关数据模型的信息,并详细介绍了 DirectQuery。

DirectQuery 文章: