在 Power BI Desktop 中使用计算选项
Power BI 提供了五个选项,用于将计算添加到 Power BI 报表中。 其中每个选项都有好处和限制。 了解这些选项以及使用这些选项的最佳时机非常重要。
Power BI 中计算的选项
下表显示了可用于在 Power BI 中添加计算的选项:
方面 | “自定义列” | 计算列 | 计算表 | 度量 | 视觉计算 |
---|---|---|---|---|---|
语言 | M | DAX | DAX | DAX | DAX |
计算于 | 数据刷新 | 数据刷新 | 数据刷新 | 按需 | 按需 |
持久性 | 保存的结果 | 保存的结果 | 保存的结果 | 根据需要计算 | 根据需要计算 |
上下文 | 行 | 行 | 行 | 筛选器 | 可视 |
存储在 | 表 | 模型 | 模型 | 模型 | 可视 |
报表中用户交互的更改 | 否 | No | No | 是 | 是 |
使用情况 | 切片器、筛选器、行、列 | 切片器、筛选器、行、列 | 在度量值、计算列或视觉计算定义中 | 视觉对象和视觉对象级别筛选器中的值 | 视觉对象和视觉对象级别筛选器中的值 |
以下部分详细介绍了如何使用上表中列出的每个计算选项。
自定义列 (Power Query)
可以使用 Power Query M 公式语言创建自己的自定义列。 与在 DAX 中创建计算列类似,Power Query M 自定义列具有以下特性和功能:
- 通过逐行计算表达式来扩展表
- 是静态的,这意味着它们不会随报表上的用户交互而更改
- 作为数据刷新的一部分进行计算,结果存储在模型文件中,这意味着它们在数据刷新时需要时间来计算,并增加模型的大小。
尽管自定义列可以聚合其他表中的行,但计算列可能会带来更好的性能,因为聚合是在数据源上完成的。
计算列 (DAX)
计算列使用 DAX 定义表上的列,通过逐行计算表达式来扩展表。 计算列是静态的,这意味着它们不会随报表上的用户交互而更改。 计算列作为数据刷新的一部分进行计算,结果存储在模型文件中,这意味着它们在数据刷新时需要时间来计算,并增加模型的大小。
计算列存储在模型中,与 Power Query 中的视觉计算和计算列不同(这些列仅在刷新期间处理),请参阅模型中的其他表和关系。
计算列可用于视觉对象上的切片器、筛选器、行和列。
可以了解有关计算列的详细信息。
度量值
度量值使用 DAX 向模型添加计算,根据需要进行计算,并响应用户在报表中所做的选择。 度量结果不会预先计算或存储在磁盘上。
度量值只能用作视觉对象或视觉对象级别筛选器中的值。
可以详细了解度量值。
计算表
大多数情况下,你都是通过将数据从外部数据源导入模型来创建表。 借助计算表,可以根据已加载到模型中的数据添加新表,或使用 DAX 创建新表。 计算表最适合于你希望将其作为模型的一部分而存储的中间计算和数据,而非在运行中计算的或作为查询结果而存储的中间计算和数据。 例如,你可以选择合并或交叉联接两个现有表 。
与其他表一样,计算表也能与其他表建立关系。 计算表列具有数据类型、格式设置,并能归属于数据类别。 可以随意对列进行命名,并将其像其他字段一样添加到报表可视化效果。 如果计算表从其中提取数据的任何表刷新或更新,则将重新计算计算表。
可以了解有关计算表的详细信息。
视觉计算
视觉计算不同于 DAX 中的其他计算选项,因为它们不存储在模型中,而是存储在视觉对象上。 通过视觉计算,可以更轻松地创建以前难以创建的计算,从而简化 DAX、简化维护,带来更好的性能。
视觉计算只能引用视觉对象上的内容。 模型中的任何内容都需要添加到视觉对象,然后视觉对象计算才能引用它,这意味着视觉对象计算不必担心筛选器上下文和模型的复杂性。
视觉计算将计算列中上下文的简单性与度量值按需计算的灵活性相结合。 与度量值相比,视觉计算对聚合数据(而不是细节级别)进行操作,通常会带来性能优势。 由于视觉计算是视觉对象的一部分,因此可以引用视觉结构,从而提高灵活性。
后续步骤
学习和使用视觉计算时,以下文章可能很有用: