了解计算列和度量值

已完成
计算列 度量值
新列通常创建为其他列的函数。 使用 DAX 函数创建的聚合值。
始终与表关联。 不与表关联。
创建时进行计算。 生成视觉对象时进行计算。
在与其关联的表的行级别进行计算。 基于行和筛选上下文进行聚合:报表页上的内容。

计算列与度量值之间的区别。

借助计算列,可以将新数据添加到已在 Power BI 模型中的表。 你将探索一些常见用例:条件列、列之间的算术运算以及依赖于多个表的列。

视频:计算列演示

创建条件列

条件列使分析员可以测试变量的逻辑方案;它们可帮助确定特定条件是为 true 还是 false。 考虑条件列的最简单方法是通过逻辑函数,如 IF 函数。 此函数会检查条件,如果为 TRUE,则返回一个值,否则返回第二个值。

下面是条件列的示例:

Active StoreName = IF( [Status] = "On", [StoreName], "Inactive" )

在上一代码片段中,你检查某个商店的状态字段是否设置为“开”。如果该语句为 true,则你希望显示商店名称。 否则,会显示短语“inactive”。

提示

与 TABLEAU 的关联:应在 Tableau 计算字段窗口中熟悉此概念。 在 Tableau 中,可以使用 IF/THEN 语法和/或 IIF 函数执行条件语句。 Power BI 中的 IF 函数最类似于 Tableau 中的 IFF 函数。

在列之间执行算术运算

Tableau 分析员应熟悉在计算列中执行算术运算,但对于某些函数,语法会有所不同。

以下代码是使用熟悉语法的计算列的示例:

DiscountedPrice = [FullPrice] - [Discount]

基于前面的代码,“DiscountedPrice”是计算列,它返回某项的折扣价。 它通过从某项的完整价格中减去其应用折扣来实现此目的。

另一方面,以下代码是使用不同语法的计算列的示例:

ProfitRatio = DIVIDE( [Profit], [Sales] )

提示

与 TABLEAU 的关联:在 Tableau 计算字段中,使用“/”字符执行除法运算:ProfitRatio = [Profit] / [Sales]

创建依赖于多个表的计算列

Power Query 是一种数据连接技术,使分析员可以发现、连接、合并和优化数据源。 借助该信息,便可以使用 Power Query 创建依赖于多个表的列。 遗憾的是,无法使用 Power Query 实现此目的。

若要在 Power BI 中弥补这种差距,分析员需要使用 DAX,因为创建的计算会使用在 Power BI Desktop 中设置的关系。

所售货物成本示例

例如,你收到了一个新任务,在该任务中需要计算使用产品批发价格和销售单位数的所售货物成本 (COGS)。 产品批发价格可在产品维度表中找到,销售单位数来自销售事实数据表。 下面是此示例中所有部分的数据预览:

COGS 示例的数据预览。

以下代码片段是依赖于多个表的计算列的示例:

COGS = Sales[Quantity] * RELATED( Product[Wholesale Price] )

提示

与 TABLEAU 的关联:仅当在 [Product] 表的 [ProductID] 维度中混合数据时,后续 Tableau 代码片段才会正常运行:COGS = [Quantity] * [Product].[Wholesales Price]

提示

与 TABLEAU 的关联:如果数据在 Tableau Desktop 中是非规范化的,则代码会类似于以下内容:COGS = { FIXED [ProductID]: SUM([Quantity] * [Wholesale Price]) }

RELATED 函数使用户可以基于现有关系在计算列或度量值中使用其他表中的值。

我们在以下视频中介绍了这些步骤:

视频:创建计算列

可能使用的另一种关系函数是 USERELATIONSHIP,它仅在计算持续时间内替代其他关系。 换句话说,它会在计算持续时间内启用所指示的关系(基于参数或两个列名)。

了解度量值

与计算列相比,度量值稍有不同。 度量值不是按每行进行计算 - 而是基于聚合进行计算。

视频:创建度量值演示

度量值 定义
= SUM( Sales[Quantity] ) 对 Sales 表中的 Quantity 列求和。
= SUMX( Sales, (Related( Product[Wholesales Price] ) * Sales[Quantity] ) ) 在 Product 表中查找 Wholesale Price,然后将它乘以 Sales 表中的 Quantity(循环访问每行,然后求和)。 这假设引用表具有关系。
= [Total Sales] -- [COGS] 从 Total Sales 度量值中减去 COGS 度量值(都必须是度量值,而不是计算列)。
= DIVIDE( [Gross Profit], [Total Sales] ) 将 Gross Profit 度量值除以 Total Sales 度量值。
= SWITCH( DATE[Month], 1, "January", 2, "February", 3, "Unknown month number" ) 创建具有多个条件的 IF/THEN 语句的简写方法。

使用常见函数的简单度量值示例及其定义。

有关计算列的详细信息,请参阅:在 Power BI Desktop 中创建计算列

有关 DAX 的详细信息,请参阅:在 Power BI Desktop 中使用 DAX