Power BI 中计算列与度量值的区别

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

用户定义的、通过数据分析表达式 (DAX) 公式赋予值的表中的列称为计算列。这些列被添加到现有表中,并根据公式保存每一行的计算值。与存储静态数据的常规列不同,计算列会在底层数据刷新时动态地重新计算值。

计算列

用户定义的、通过数据分析表达式 (DAX) 公式赋予值的表中的列称为计算列。这些列被添加到现有表中,并根据公式保存每一行的计算值。与存储静态数据的常规列不同,计算列会在底层数据刷新时动态地重新计算值。

功能和目标

计算列的主要目标是向当前数据集添加新数据或使用同一行的数据执行计算。例如,计算列可以执行数学运算、生成与日期相关的属性或连接来自不同列的数据。

具体来说,如果我们查看销售表,我们可以创建一个计算列,从收入中减去成本,然后将结果除以收入,以找到每笔交易的利润率。

衡量标准

相比之下,度量值是动态计算,用于组合计算、涉及多个表的计算或根据情况变化的计算。与计算列不同,度量值是根据用户与可视化图表的交互方式动态计算的,而不是保存在数据模型中。

功能和目标

度量值在动态和上下文感知计算至关重要的场景中表现良好。它们对于 Power BI 报表中的切片、切块和筛选数据特别有用。度量值可以汇总信息、执行复杂的计算,并动态适应报表的上下文。

例如,度量值可以计算用户指定期间的滚动平均值,或特定产品类别的总销售额。当灵活性和对用户交互的响应能力至关重要时,度量值就显得尤为重要。

度量值和计算列在提高 Power BI 的整体数据模型方面发挥着重要作用。用户可以使用计算列添加新的维度、获得新的见解并生成更丰富的数据可视化。这些列构成了数据集的重要组成部分,有助于进行各种类型的分析。

相反,度量值赋予数据模型响应性和交互性。它们提供了适应不断变化的环境所需的动态计算,确保在用户使用报表时,见解能够保持准确。

Power BI 中的计算列

创建过程

  1. 打开 Power BI Desktop:启动 Power BI Desktop,这是创建 Power BI 模型和报表的程序。
  2. 连接到数据源:通过连接或导入来打开相关数据源。这可能是一个文件、数据库或任何其他支持的数据连接,例如 Excel、SQL 等。
  3. 使用数据模型:通过单击左侧面板中的“数据”图标,可以访问“数据”视图。您可以在此处查看数据表。
  4. 选择所需的表:单击要添加计算列的表。
  5. 添加新列:单击左侧的“模型”图标以查看“模型”视图。在表格视图中找到“建模”选项卡,然后选择“新列”。
  6. 使用公式栏:在屏幕顶部的公式栏中输入计算列的 DAX 公式。每一行的值将根据此公式进行计算。
  7. 命名您的列:输入公式后,为计算列命名。在可视化图表中将使用此名称来引用该列。
  8. 单击 Enter:单击“Enter”以运行公式。现在计算列已创建,通过公式即时为每一行计算出值。
  9. 检查结果:返回“数据”视图,并确保计算出的值显示在您新创建的计算列中。

即时计算

计算列在输入公式后即时计算的特性使其与众不同

  • 动态计算:Power BI 在您输入 DAX 公式并按 Enter 键后,会实时动态地为每一行计算值。
  • 内存中数据模型:此类数据模型存储计算列的值。这意味着只要数据模型已加载,这些值就会一直存在,从而便于快速检索和分析。

示例场景

  1. 考虑零售数据集中的以下场景,您希望为计算利润和产品全名添加一个计算列
  2. 组合计算列以生成完整的产品名称

此公式通过将“产品名称”和“产品类别”列连接起来,并以连字符分隔,创建了一个代表完整产品名称的新列。

创建计算列以计算利润

  • 利润的计算方法是 [销售金额] - [成本金额]。
  • 要获取每行的利润,此公式将“成本金额”从“销售金额”中减去。
  • 该数据集通过“ProductFullName”计算列得到增强,为每个产品提供了一个简洁的表示。
  • “Profit”计算列使更深入的财务分析变得容易,因为它会即时计算每笔交易的盈利能力。

衡量标准

  1. 动态计算:Power BI 度量值是动态的;它们会根据上下文的变化以及用户与工具的交互方式进行调整。度量值不是静态值,而是根据报表中使用的特定特征、过滤器或维度调整其结果。
  2. 上下文灵活性:度量值能够灵活地适应其环境。当用户需要从多个角度检查和评估数据时,这种灵活性尤其有用。
  3. 交互式报表:当用户通过应用过滤器、切片数据或深入研究细节来与 Power BI 报表交互时,度量值会自动重新计算以提供准确且与上下文相关的结果。

在报表中的使用

  1. 报表中的多功能性:度量值对于报表至关重要,尤其是在涉及多个属性和维度时。它们充当了根据用户的数据探索来编译、汇总和计算值的基石。
  2. 组合属性:用户可以轻松地在 Power BI 报表中组合度量值和各种属性。例如,用户可能希望查看多个产品类别、地理区域或时间段的总销售额。
  3. 支持跨属性分析:度量值支持跨属性分析,使用户能够同时跨多个维度分析数据以获得见解。

公式语法

  1. 区别特征:度量值在语法上与计算列不同。度量值用于聚合和上下文计算,而计算列需要对每个条目进行即时计算。
  2. 聚合函数:度量值经常使用标准的聚合函数,如 SUM、AVERAGE、COUNT、MIN、MAX 等。借助这些功能,用户可以根据选择的上下文动态聚合数据。
  3. 自定义表达式:度量值可以包含自定义表达式和基本函数,使用户能够设计满足特定报表要求的复杂计算。

示例公式

1. 总销售额度量值

  • 通过将所有销售金额相加,此度量值生成了一个动态总额,该总额根据报表的当前上下文而变化。

2. 平均利润率

  • 此度量值使用此指标计算平均利润率,该指标会根据所选的属性和过滤器不断调整。

示例场景

汇总每个产品类别的总销售额

设想一个用户希望评估不同产品类别的总销售额的场景。

度量值公式

  • 此度量值实时计算每个产品类别的总销售金额。
  • 通过 CALCULATE 函数调整上下文,该度量值会考虑所有产品类别,而忽略可能已应用的任何其他筛选器。

上下文评估:当此度量值包含在 Power BI 报表中时,它会提供一个具有上下文感知的总销售额数字。其结果会根据所选的产品类别而有所不同。

在度量值评估中突出上下文

  1. 上下文的重要性:度量值实施的环境决定了其有效性。考虑上下文感知的度量值可以产生准确且相关的结果。
  2. 对筛选器的动态响应:报表中的度量值会动态响应应用的筛选器。例如,如果用户筛选特定时间段的数据,度量值将重新计算以反映所选时间范围。

计算列和度量值的优势

计算列和度量值在此过程中至关重要,因为它们提供了支持动态报表和灵活数据建模的独特优势。

1. 灵活的数据建模:Power BI 的数据建模功能围绕计算列和度量值展开。它们使用户能够将额外的维度、特征和计算值添加到现有数据模型中,从而使其更加健壮。用户可以通过利用数据分析表达式 (DAX) 算法来计算列中的值,从而根据表中预先存在的数据生成列。反之,度量值将动态计算引入模型,以适应环境和用户行为的变化。

好处

  • 增强维度:为了增强数据集,计算列支持插入从当前数据获得的新的维度或属性。
  • 计算值:为了提供对数据集更深入的理解,计算值来自计算列和度量值。

2. 直观的度量值:Power BI 度量值是动态的;它们的结果会根据它们使用的上下文重新计算。开发交互式和响应式报表需要这种动态行为,尤其是在用户从多个角度检查数据时。

好处

  • 上下文适应性:度量值通过动态适应过滤器、切片器和其他报表元素的更改,在多种上下文中提供正确的结果。
  • 交互式报表:通过添加动态度量值,Power BI 报表变得更具交互性,使数据能够动态钻取、筛选和分析。

3. 用户友好的语法:在创建计算列和度量值时,DAX 公式语法旨在易于理解和访问。与 Excel 公式类似,DAX 公式具有简单的语法,使 Power BI 用户易于使用。

好处

  • Excel 用户熟悉:对于熟悉 Excel 的用户来说,由于公式语法的相似性,更容易过渡到 Power BI。
  • 降低学习曲线:DAX 语法的用户友好设计降低了开发强大计算的学习曲线。

4. 聚合函数:度量值使用 DAX 强大的聚合函数,允许用户执行复杂的计算和聚合。这些函数增加了度量值的适应性和分析深度,包括 SUM、AVERAGE、MIN、MAX 等。

好处

  • 聚合功能:聚合函数通过允许用户动态聚合数据来促进各种分析场景。
  • 复杂计算:通过使用聚合函数,度量值可以包含复杂的计算,从而产生有见地的结果。

5. 大型函数库:DAX,即 Power BI 的公式语言,拥有大量的运算符、结构和函数。借助这个庞大的函数集,用户可以为计算列和度量值构建复杂且可靠的公式。

好处

  • 公式的多功能性:借助大型函数库,用户可以开发各种公式,从基本计算到复杂分析。
  • 定制解决方案:由于函数种类繁多,用户可以定制公式以满足特定的报表和分析需求。

计算列和度量值的限制

Difference Between Calculated Column And Measure In Power BI

尽管 Power BI 的计算列和度量值是有用的工具,但用户应了解一些限制。这些限制可能会影响性能,给用户带来故障排除和学习的困难,并引起对底层数据模型的依赖。

1. 性能考虑:性能考虑是一个主要限制,尤其是在处理大型数据集时。计算指标和列可能会增加开销,影响查询的响应速度和性能。

挑战

  • 资源密集:大量使用计算列和度量值可能会影响 Power BI 模型整体性能,导致内存和 CPU 使用率增加。
  • 数据刷新时间:数据刷新时间较长可能会影响数据的更新速度。这尤其适用于计算列,特别是那些具有复杂算法的列。

2. 学习曲线:对于从 Excel 转向 Power BI 的用户来说,需要一个学习过程来掌握计算列和度量值中 DAX 公式细微之处。

挑战

  • 公式语法差异:虽然 DAX 公式与 Excel 公式相似,但用户可能需要适应一些差异,这可能会阻碍他们的学习过程。
  • 上下文理解:用户需要熟悉新的概念,才能理解度量值的动态性质以及它们对上下文的依赖程度。

3. 调试工具有限:由于 Power BI 的调试工具比标准编程语言少,因此调试 DAX 公式可能更加困难。

挑战

  • 逐步调试:Power BI 缺乏逐步调试功能,使得查找和修复复杂 DAX 计算中的错误变得困难。
  • 依赖外部工具:用户经常需要依赖外部工具或方法来调试 DAX,这使得该任务更加复杂。

4. 依赖于数据模型:计算列和度量值与底层数据模型紧密相关。对数据模型进行的修改可能会影响这些计算的结果和行为。

挑战

  • 模型更改会影响公式:修改关系、添加或删除表或更改数据类型可能会影响计算列和度量值执行的计算。
  • 对数据模型结构的敏感性:为了防止对当前计算产生意外影响,用户在对数据模型进行结构更改时应谨慎。

5. 不支持递归函数:Power BI 使用的公式语言 DAX 不支持递归函数。在需要分层结构或迭代计算的情况下,递归函数是必不可少的。

挑战

  • 算法复杂度限制:DAX 中缺乏原生支持可能对需要递归算法或分层处理的场景构成挑战。
  • 需要变通方法:在通常使用递归的情况下,用户可能需要开发变通方法或替代策略。