通过允许将数据分析表达式(DAX)公式定义为计算项,计算组可以显著减少必须创建的冗余度量值数。 计算项可以应用于模型中的现有度量值。 有关计算组的详细信息,请参阅计算组一文。
在模型视图中添加新的计算组
在 Power BI 中,编辑语义模型时,导航到 “模型”视图 并选择功能区中的 “计算组 ”按钮。 如果尚未在模型资源管理器中,“数据”窗格将打开到“模型”视图。
如果阻止隐式度量值属性处于关闭状态,系统会提示你打开一个对话框窗口以启用计算组的创建。
隐式度量值发生在报表视图中,直接在视觉对象中使用数据窗格中的数据列。 视觉对象允许将其聚合为一个SUM、AVERAGEMIN、MAX或一些其他基本聚合,从而成为隐式度量值。 将计算组添加到模型时,Power BI 不再显示数据窗格中数据列旁边的求和符号,并阻止将数据列直接作为值添加到视觉对象,从而阻止创建隐式度量值。 已在可视化中创建的现有隐式度量将继续发挥作用。 必须启用“阻止隐式度量值”属性,因为计算项不适用于隐式度量值。 计算项仅适用于度量值或显式度量值。
在创建新度量值并定义 DAX 表达式以聚合数据列时,将发生度量值或显式度量值。 显式度量值还可以有条件逻辑和筛选器,充分利用 DAX 可以执行的操作。 教程:了解如何在 Power BI Desktop 中创建自己的度量值。
注意
对于不希望计算项更改的度量值的情况,可以写入计算项表达式来忽略按名称或数据类型的度量值。
当选择“是”启用禁止隐式度量属性后,一个计算组将被添加,您可以开始在 DAX 公式栏中定义第一个计算项的 DAX 表达式。 如果已启用 阻止隐式度量,对话框将不会显示。
SELECTEDMEASURE 是一个 DAX 函数,充当计算项表达式中度量值的占位符。 可以从其文章中了解 SELECTEDMEASURE DAX 函数。
使用 Power BI TMDL 视图添加计算组
可以在 Power BI Desktop 的表格模型定义语言或 TMDL 视图中 创建计算组。 编辑语义模型并使用此 TMDL 脚本。
createOrReplace
table 'Calculation group'
calculationGroup
precedence: 1
calculationItem 'Calculation item' = SELECTEDMEASURE()
column 'Calculation group column'
dataType: string
summarizeBy: none
sourceColumn: Name
sortByColumn: Ordinal
annotation SummarizationSetBy = Automatic
column Ordinal
dataType: int64
formatString: 0
summarizeBy: sum
sourceColumn: Ordinal
annotation SummarizationSetBy = Automatic
时间智能示例
Analysis Services 表格模型中的计算组有一个时间智能示例,可用于填充某些计算项。 该示例可以添加到具有 Date 表的任何模型,也可以从 DAX 示例模型 -DAX 下载 Adventure Works DW 2020 PBIX。
重命名计算组
若要重命名计算组,请在“数据”窗格中双击它,也可以选择它并使用“属性”窗格。
重命名计算组列
若要重命名计算组列,请在“数据”窗格中双击它,也可以选择它并使用“属性”窗格。 您选择的列是在可视化或切片器中用于应用特定计算项的列。
重命名计算项
第一个计算项创建为 SELECTEDMEASURE(),因此也可以双击或使用“属性”窗格重命名它。
创建更多计算项
若要创建更多计算项,可以使用“计算项”部分或计算组本身的右键单击上下文菜单,然后选择“新建计算项”,或使用“计算项”部分的“属性”窗格。
添加所有时间智能计算项后,计算组如下图所示。
请注意指示错误的红色三角形图标。 存在这些错误是因为示例 DAX 表达式使用名为 DimDate 的 Date 表,因此我需要更新 DAX 表达式以改用名称 Date。 下图显示了更正之前的 DAX 表达式。
对 DAX 表达式进行更正后,错误就会消失。
在计算项中对每个错误进行更正后,不再显示红色三角形警告图标。
重新排序计算项
若要以所需的任何逻辑方式对计算项重新排序,可以在“属性”窗格中选择“计算项”部分,或右键单击计算项的上下文菜单,在列表中向上或向下移动计算项。
将动态格式字符串添加到计算项
默认情况下,计算项使用基础度量值格式。 我们可能需要改为将 YOY% 显示为百分比。 为此,请选择 YOY% 计算项,然后在属性窗格中打开“动态格式字符串”,这样就可以指定 DAX 表达式来创建格式字符串。 对于此示例,它不需要任何条件元素,因此只需 #,##0.00% 将此计算项应用时的格式更改为百分比,如下图所示。
在报表中使用计算组
若要在报表中使用新的计算组,请转到报表视图,创建矩阵视觉对象并添加以下内容:
- 从日期表到行的月份列
- 从时间智能计算组到列的时间计算
- Orders 度量值到值
注意
如果在模型中未创建度量Orders,可以使用其他度量,或者转到功能区,选择新建度量,以使用此 DAX 表达式来创建。
Orders = DISTINCTCOUNT('Sales Order'[Sales Order])
下图显示了生成视觉对象。
矩阵视觉对象中列的计算项显示按每个计算项分组的度量 Orders 的顺序。 还可以通过将计算组列添加到切片器视觉对象,将单个计算项应用于多个度量值。
在度量值中使用计算项
可以通过使用应用于特定度量值的计算项的表达式来创建新度量值。
若要创建 [Orders YOY%] 度量值,可以将计算项与 CALCULATE 配合使用。
Orders YOY% =
CALCULATE(
[Orders],
'Time Intelligence'[Time Calculation] = "YOY%"
)
设置计算组优先级
最后,如果将更多计算组添加到模型,则可以指定它们应用于具有优先属性的度量值的顺序。 可以在 “计算组”部分 属性窗格中调整计算组优先级,如下图所示。
可以在 Analysis Services 表格模型中的“计算组”文章中了解有关计算组优先级的详细信息。
运算组的选择式
可以为计算组设置选择表达式,以对计算组返回的内容进行细致控制。这样,当用户进行多个选择、无效选择或没有进行任何选择时,您都可以精确地管理计算组的返回结果。 请参阅 选择表达式。
注意事项
模型指标更改为变体数据类型
将计算组添加到语义模型后,Power BI 报表会为所有度量值使用 变体 数据类型。 如果之后,将从模型中删除所有计算组,度量值将再次还原为其原始数据类型。
变体数据类型可能导致使用度量值的度量值动态格式字符串时出现错误。 使用 FORMAT DAX 函数强制将变体度量值再次识别为字符串数据类型。
FORMAT([Dynamic format string], "")
或者,可以将表达式重新用于具有 DAX 用户定义函数 的动态格式字符串。
当计算项对非数值进行数学运算时,出现视觉呈现错误。
非数值度量值通常用于视觉对象中的动态标题和度量值的动态格式字符串。 错误 无法将类型为“文本”的值转换为“数值”类型的消息显示在受影响的可视化对象上。 计算项表达式可以通过添加检查来避免此错误,以查看度量值是否为数值,然后再应用数学运算。 在计算项中使用 ISNUMERIC 。
Calculation item safe =
IF (
// Check the measure is numeric
ISNUMERIC( SELECTEDMEASURE() ),
SELECTEDMEASURE() * 2,
// Don't apply the calculation on a non-numeric measure
SELECTEDMEASURE()
)
相关内容
以下文章提供了更多有关数据模型的信息,并详细介绍了 DirectQuery。
- Analysis Services 表格模型中的计算组
- 使用 Power BI 中的模型资源管理器
- 使用 Power BI 中的建模视图
- 自动聚合
- 在 Power BI Desktop 中使用复合模型
- 在 Power BI Desktop 中管理存储模式
- Power BI Desktop 中的多对多关系
DirectQuery 文章: