Power BI 中的计算列

2024 年 9 月 20 日 | 阅读 11 分钟

计算列是 Power BI 分析能力的基础,使其成为商业智能和数据分析中强大的工具。Power BI 的一个重要组成部分是计算列,它们是增强和塑造数据模型的游戏规则改变者。本文将向我们介绍计算列、语法、函数、if else 和嵌套 if 语句。

计算列如何工作?

在 Power BI 中,计算列是表中用户定义的列,其值来自数据分析表达式 (DAX) 公式。与静态或显式导入的列不同,计算列不会在数据集中存储预先存在的数据。相反,它们动态响应筛选器、切片器和其他用户活动的变化,并根据公式计算结果。

Power BI 的计算列在改进数据模型方面至关重要。它们允许用户添加原始数据中不一定存在的计算数字。这种改进不仅仅是简单地添加更多列;它涉及创建智能的、上下文感知的计算,从而提供对数据更深入的理解。

用户可以通过向数据模型添加计算列来增强其工作的分析能力,超越原始数据所能实现的范围。当需要更多上下文信息或转换才能得出完整结论时,这尤其有用。

计算列的重要用途

Calculated Column in Power BI
  1. 数据转换:计算列有助于将未处理的数据转换为更具洞察力和有用的信息。这些列可以实现动态计算,这些计算会根据分析的上下文而变化:值聚合、数学运算或条件逻辑创建。
  2. 添加业务逻辑丰富:计算列提供了一种将业务逻辑直接添加到数据模型中的方法。用户可以将复杂的业务规则、计算或派生指标整合到数据结构中,以确保报告和分析的准确性和一致性。
  3. 支持可视化:Power BI 的许多可视化都围绕计算列构建。计算列的灵活性使用户能够根据特定的业务需求自定义其可视化,无论是开发自定义层次结构、计算增长率还是构建关键绩效指标 (KPI)。

表格可以使用 Power BI 计算列中的 DAX 公式添加额外数据。与标准列相反,计算列在数据导入期间从提供的表达式动态获取其值。通过允许用户执行独特的计算、连接数字或从现有列中提取重要信息,这些列对于改进数据模型至关重要。

Power BI 中计算列的语法和结构

语法概述

Power BI 使用数据分析表达式 (DAX) 语言来创建计算列,该语言旨在处理关系数据,并且与 Excel 公式有一些相似之处。计算列语法逻辑严谨,包含运算符、函数和指向数据模型列的指针。以下是总结

  • ColumnName:这是新计算列的用户定义名称。任何合法的标识符都可以,但它必须具有描述性并遵循命名准则。
  • =(赋值运算符):等号启动公式并将计算结果放入指定列中。
  • [Expression]:该公式或 DAX 表达式指定如何计算计算列中的值。它可能包含常量、指向已存在列的指针以及不同的 DAX 函数。

计算列公式的结构

让我们分解一下计算列公式的结构

1. 用户定义名称 (ColumnName)

  • 为计算列选择一个有意义且具有描述性的名称。此名称将在查询、可视化和 Power BI 环境的其他区域中引用计算值。

在这种情况下,计算列名为“TotalSales”。

2. 赋值运算符 (=)

  • 等号 (=) 指示公式,它还表示将计算右侧的每个行的表达式,并将结果记录在指定列中。

在这种情况下,“SalesAmount”和“Discount”列的总和被分配给计算列“TotalSales”。

3. DAX 表达式 ([Expression])

  • 表达式定义了计算列中的值是如何派生的。它可以包含各种元素,包括
  • 引用同一表或相关表中的现有列。
  • DAX 函数用于计算中。
  • 字面值或常量。

在这里,将“Quantity”和“UnitPrice”列中的值相乘即可得到计算列“TotalSales”。

计算列公式示例

让我们看一个例子,我们希望使用以下公式构造一个名为“ProfitMargin”的计算列


Calculated Column in Power BI
  • 用户定义名称:“ProfitMargin”
  • 赋值运算符:“=”
  • DAX 表达式:“DIVIDE([Profit], [Sales Amount])”

此公式将“Profit”列除以“Revenue”列以确定利润率。通过使用“DIVIDE”函数处理分母(Revenue)可能为零的情况,可以避免潜在错误。

附加信息

  • 函数调用的括号
  • 使用 DAX 函数时,将函数参数括在括号中是惯例。考虑 SUM([Sales])。
  • 大小写敏感性
  • DAX 不区分大小写,因为“TotalSales”和“totalsales”指的是同一列。尽管如此,坚持统一的命名风格以提高可读性是一个好主意。
  • White Space
  • 即使 DAX 中的空格(空格)通常被忽略,但使用适当的缩进和间距可以提高代码的可读性。

计算列的创建

Power BI Desktop 中的“新建列”功能(可从“报表”、“数据”或“模型”视图访问)用于构造计算列。与 Power Query 编辑器中通过选择“新建列”创建的自定义列不同,计算列处理已导入模型的数据。此方法提供了一种灵活且引人入胜的方式,可以直接在 Power BI 环境中操作和丰富数据。

创建计算列的分步过程

第 1 步:打开 Power BI Desktop

  • 打开 Power BI Desktop 并将数据集加载到 Power BI 模型中。

第 2 步:导航到数据视图

  • 通过单击左侧面板中的“数据”图标,转到“数据”视图。

第 3 步:选择表格

  • 选择要为其创建计算列的表格。

第 4 步:单击“新建列”

  • 导航到顶部菜单中的“建模”选项卡,然后单击“新建列”。
  • 单击新列后,将在现有数据中添加一个空列。需要 DAX 表达式来填充新列中的值。
Calculated Column in Power BI

第 5 步:定义列名

  • 在公式栏中输入计算列的名称。例如,如果计算总利润,可以将其命名为“Profit”。

第 6 步:编写 DAX 公式

  • 编写 DAX 公式以定义计算列。根据需要使用现有列、常量和 DAX 函数。
Calculated Column in Power BI

了解在数据转换阶段在 Power Query 编辑器中创建的自定义列与计算列之间的区别至关重要。同时,两者都需要创建列。Power BI 的计算列对加载的数据进行操作,以实现实时计算和交互,而 Power Query 的自定义列是数据导入过程的一个组成部分。

计算列使用 DAX,这是一种专门为 Power BI Desktop 关系数据处理设计的计算语言。DAX 拥有包含 200 多个函数、运算符和结构的广泛库,允许用户为各种分析需求创建复杂的公式。与 Excel 公式一样,这些公式与已切片或筛选的报告数据进行交互。

示例场景

让我们回顾一个真实的场景,展示计算列的强大功能。介绍 Vardhan,一位服装经理,他的目标是编制一份详细的报告,显示每个商品的整体利润。他的表格中有不同的字段:州、类别、城市和产品名称。另一方面,Vardhan 希望报告以同一行中的单一值显示产品名称和类别,以及通过从成本中减去销售价格确定的总利润。

连接产品全名的值

销售经理 Vardhan 使用计算列连接“产品名称”和“类别”列中的值。DAX 公式为

Calculated Column in Power BI

Calculated Column in Power BI

此公式创建一个名为 Product FullName 的新列,其中产品名称和类别用连字符组合在一起。

计算利润

要计算利润,请从销售价格中扣除成本价格并添加另一个计算列。以下是 DAX 公式

Calculated Column in Power BI

此算法通过根据销售和成本数字动态计算每行的利润来生成利润列。

Power BI 中计算列的用例和示例

Power BI 的计算列是灵活的工具,具有许多应用程序,可用于转换数据、增强数据集和生成有洞察力的分析。让我们检查各种上下文中的实际示例

1. 盈利能力分析

场景:确定销售数据集中每个产品的利润率。

DAX 公式示例

好处

  • 详细概述每个产品的盈利能力
  • 有助于根据利润率做出明智的决策。

2. 时间智能

场景:假设您有一个用于计算年初至今 (YTD) 销售额的列。

DAX 公式示例

好处

  • 允许使用 YTD 销售数据进行时间分析。
  • 支持对季节性和趋势研究的洞察。

3. 客户细分

场景:根据客户的总购买量,将客户分为高价值、中价值和低价值细分。

DAX 公式示例

好处

  • 支持定制策略和有针对性的营销。
  • 改善客户关系管理。

4. 文本连接

场景:将类别和产品名称合并到一个列中。

DAX 公式示例

好处

  • 生成更清晰、信息量更大的产品显示。
  • 简化报告的分析和可视化。

5. 自定义层次结构

场景:根据季度和年份创建唯一的日期层次结构。

DAX 公式示例

YearQuarter = 'Date'[Year] & " Q" & 'Date'[Quarter]

优点

  • 通过添加个性化层次结构来改进基于时间的分析。
  • 增强报告的钻取功能。

6. 评级或评分

场景:根据产品的销售情况进行评级。

优点

  • 使评估产品性能变得更容易。
  • 促进快速识别高成就项目。

7. 年龄计算

示例:使用客户的出生日期确定每个客户的年龄。

DAX 公式示例

好处

  • 允许根据年龄进行客户细分。
  • 支持专业营销计划。

使用 IF 语句创建计算列

对于条件语句,使用 IF 函数。如果条件为真,它返回一个值;如果为假,它返回一个不同的值。

产品表

产品 ID销售
11200
2800
31500
4600
52000
62500
  • 产品 ID:分配给每个产品的特殊数字。
  • 销售额:每个产品的总销售额。
  • BestSeller(计算列):通过应用给定的 DAX 算法来确定,将销售额超过 1000 的产品标记为真 (1),将销售额低于 1000 的产品标记为假 (0)。

DAX 公式


Calculated Column in Power BI

计算如何工作?

销售额比较

  • 'Products'[Sales] > 1000:验证每个产品的销售额是否超过 1000。

标志分配

  • IF('Products'[Sales] > 1000, 1, 0):如果销售额超过 1000,则为“BestSeller”赋值 1(真);否则,赋值 0(假)。

示例解释

  • 对于销售额 = 1200 的产品,公式将为 IF(1200 > 1000, 1, 0) = 1。
  • 对于销售额 = 800 的产品,计算将为:IF(800 > 1000, 1, 0) = 0。
  • 同样,每个产品的“BestSeller”是根据销售标准确定的。
  • 此标志列通过使识别符合“畅销书”要求的产品变得更容易,从而促进基于销售成功的报告和分析。

使用多个 IF 语句创建计算列

通过在计算列中使用多个 IF 语句,您可以根据多种情况在 Power BI 中开发更复杂的推理。在 IF 语句中,对条件进行评估,并根据条件为真或假返回给定值或计算。现在,让我们研究如何在计算列中利用多个 IF 语句

多个 IF 语句语法

要在计算列中使用多个 IF 语句,通常的语法如下

示例:销售业绩分类

假设我们有一个包含“Revenue”列的“Sales”表。我们希望构造一个计算的“SalesCategory”列,将销售业绩分为各种组。

  • 初始 IF 语句确定“Revenue”是否超过 10,000。如果验证成功,则将其分类为“高”。
  • 如果第一个条件不满足,则执行第二个 IF 语句,该语句确定“Revenue”是否大于 5000。如果此为真,则分类为“中”。
  • 如果第二个条件不满足,则执行第三个 IF 语句,该语句确定“Revenue”是否大于 1000。如果此为真,则类别指定为“低”。
  • 如果上述所有先决条件均未满足,则分配默认的“非常低”类别。

表格表示

收入销售类别
12000
6000
800
500非常低
  • 如果产品的收入为 12,000 美元,则将其归类为“高”。
  • 如果产品的收入为 6,000 美元,则将其归类为“中”。
  • 如果产品的收入为 800 美元,则将其归类为“低”。
  • 如果产品的收入为 500 美元,则将其归类为“非常低”。

重要注意事项

  • 条件:按顺序考虑条件很重要。在顺序评估条件时,应用第一个为真的条件。
  • 嵌套 IF 语句:可以嵌套一个或多个 IF 语句以处理更复杂的情况。
  • 默认结果:最好提供默认结果或 ELSE 语句来处理不满足任何条件的情况。
  • 可读性:为了提高可读性,尤其是在复杂设置中,请保持适当的格式和缩进。

从另一个表创建 Power BI 计算列

在 Power BI 中,您可以使用 DAX(数据分析表达式)公式根据另一个表中的值在表中构建计算列。通常,为了实现这一点,需要在表之间建立关系,然后使用这些关系从相关表中检索或计算值。让我们详细分析该过程。

场景:使用表 B 中的值在表 A 中创建计算列

步骤 1:识别表之间的连接

  • 假设我们有两个表,“Sales”和“Products”,其中“Sales”包含销售交易数据,“Products”包含单个产品信息。
  • 在两个表的“ProductID”列之间建立关系。

步骤 2:导航到“Sales”表

  • 在 Power BI Desktop 的“数据”视图中选择“Sales”表。

步骤 3:构造新的计算列

  • 单击“建模”选项卡上的“新建列”按钮。

步骤 4:编写 DAX 方程

  • 假设我们希望通过添加计算列来显示“Sales”表中每个交易的产品类别。DAX 公式可能如下所示
Calculated Column in Power BI

步骤 5:按 Enter 键

  • 要使用该公式,请按 Enter 键。

步骤 6:切换到报表视图

  • 要查看新的计算列,请切换到“报表”视图。
  • 使用“ProductID”列之间的关系作为指导,链接函数从链接表(“Products”)中检索条目。
  • 此函数从“Products”表动态提取“Sales”表中每个交易的“Category”数据。

结果表

Calculated Column in Power BI

关键点

  • 使用 RELATED 计算的动态列将在关系或数据更新时更新。
  • 明智地使用关系,并了解它们如何影响计算。
  • 使用此方法,您可以通过在当前表中包含来自链接表的特定信息来增加报告的深度。
  • 根据数据模型中的特定列和关系修改 DAX 计算。
  • 这些要点允许您将计算列添加到 Power BI 中,这些列从连接的表中提取数据,从而增强您的数据集以进行更智能的报告和分析。