Power BI 中的 Dax 是什么?

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

数据分析表达式(DAX)是一种强大的公式表达语言,主要用于 Microsoft Power BI、Excel 的 Power Pivot 和 Analysis Services。它旨在操作和分析表格数据存储。通过 DAX,用户可以制定复杂的方程式、聚合和表达式,从其数据中提取有意义的信息。

What Is Dax in Power BI

DAX 公式

What Is Dax in Power BI

1. 语法和结构

DAX 公式的语法和结构是预定的。它们包含按特定顺序排列的值、运算符和函数,以指定操作或计算。由于该语言不区分大小写,因此易于使用。

此示例中的 DAX 公式 SUM([Sales Amount]) 计算“销售额”列的总和,“总销售额”是度量值。

2. 函数

DAX 提供了许多用于各种用途的函数,例如文本处理、日期和时间操作、统计计算和数学运算。常用函数包括 SUM、COUNT、AVERAGE、IF 和 RELATED。

在这里,利润率通过 DAX 函数 DIVIDE 将总利润除以总销售额来确定。

衡量标准

1. 动态计算

度量值是根据其应用情况而变化的动态计算。它们必须创建额外的度量值,例如关键绩效指标 (KPI)。度量值可以利用用户定义的公式或常见的聚合过程。

此度量值通过将总销售额除以日期数据库中的总条目数来确定每天的平均销售额。

2. 度量值创建

DAX 公式栏用于在模型设计器中构建度量值。在 Power BI 或 Excel 等报告工具中,用户定义一个公式,结果会根据上下文动态生成。

3. 上下文和评估

为了有效评估度量值,上下文是必要的。Power BI 和 Excel PivotTables 是提供上下文的报告客户端程序的示例。每个报告的单元格都会生成一个唯一的查询来评估度量值的特定上下文。

计算列

在数据模型中,计算列是添加到现有表中的额外列。DAX 公式定义这些列,当输入公式时,其值将为每一行确定。存储在内存中的数据模型包含计算列。

在此示例中,“名字”和“姓氏”列被连接以生成名为“全名”的计算列。

计算列中的值仅在表或关联表被处理或刷新时才会重新计算。这确保了数据不需要持续重新计算并保持最新。

当数据需要预先计算和存储时,计算列非常方便。连接、多列计算和新维度的创建是它们的许多用途之一。

计算表

公式表达式是计算表的来源,计算表可以完全或部分依赖于同一模型中的其他表。被调用的表使用 DAX 公式来生成其值,而不是从其他来源导入数据。

已计算的表对于角色扮演很有用。例如,日期表可以根据外键关系用作 OrderDate、ShipDate 或 DueDate。通过为每种情况显式创建计算表来实现灵活性。

计算表支持与其他表的关系。为了确保数据一致性,当它们从中提取数据的表更新或刷新时,它们的值会重新生成。

行级安全性

  • 借助 Power BI 的行级安全性功能,用户可以根据 DAX 公式定义的条件限制对特定数据行的访问。
  • 确保用户只查看与其职位或职责相关的相关内容至关重要。

1. 布尔求值:行级安全 DAX 公式必须求值为布尔 TRUE/FALSE 条件。此条件确定查询结果可以为特定角色的成员返回哪些行。

此示例中的 DAX 公式确保销售角色成员只能查看美国客户的数据。

2. 相交公式:行级的安全公式适用于相关行和指定行。当一个表具有多个关系时,活动关系决定过滤器,行级安全公式与为相关表建立的公式相交。

Power BI 中 DAX 的优势

What Is Dax in Power BI
  1. 适应性数据建模:在 Power BI 中,DAX 为适应性数据建模提供了坚实的基础。由于这种多功能性,用户可以设计计算列、创建动态度量值并建立表之间的链接。用户可以轻松适应复杂的数据结构并修改其模型以满足不断变化的业务需求。
    • 假设您有两个表:一个用于销售,另一个用于产品。DAX 通过允许您在这些表之间建立链接、构建计算列(例如利润率)以及生成总销售额或平均订单价值的度量值,提供了一个动态且灵活的数据模型。
  2. 动态度量值:DAX 生成动态度量值的能力是其主要优势之一。这些操作根据其应用情况而调整。
    • 在构建灵活的报告和仪表板时,这种动态行为至关重要,因为计算必须根据用户选择和交互进行调整。
    • 考虑一个动态的年初至今销售额度量值。根据所选的时间段,相同的度量值可以产生不同的结果;无论报告的详细程度如何,它都会动态更新以反映年初至今的数字。
  3. 用户友好的语法:DAX 具有极其用户友好的语法,尤其是对于 Excel 用户而言。由于语法与 Excel 公式相似,因此用户从 Excel 切换到 Power BI 会更容易。
    • 示例:如果您熟悉 Excel 计算,则切换到 DAX 很容易。例如,使用度量值来确定每日平均销售额可能需要使用 AVERAGE 函数,类似于 Excel。
  4. 强大的聚合函数:SUM、AVERAGE、MIN 和 MAX 只是 DAX 提供的众多强大聚合函数中的一小部分。这些功能使用户能够高效地对大型数据集执行复杂的计算,这有助于生成信息丰富的可视化效果。
    • 示例:为了快速有效地聚合多行数据,DAX 中的 SUM 函数可用于获取总销售额。
  5. 大型函数库:DAX 拥有一个大型函数库,可以处理各种数据处理任务。用户可以在 Power BI 中直接执行高级分析,包括文本处理、日期和时间计算、统计和数学运算等。
    • 示例:DAX 中的 DATEDIFF 函数提供了一种简单的日期相关计算方法,允许用户确定两个日期之间的差异。

Power BI 中 DAX 的局限性

What Is Dax in Power BI
  1. 性能注意事项:DAX 是一款强大的工具,但复杂计算(尤其是涉及大型数据集的计算)可能会影响性能。用户需要了解优化策略,以确保有效的数据处理和快速的报告显示。
    • 示例:迭代大型数据集的 DAX 公式可能会导致更长的查询执行时间。通过使用查询折叠或公式优化等功能可以解决性能问题。
  2. 学习曲线:掌握复杂的 DAX 函数可能涉及学习曲线。要创建复杂的度量值和计算,用户必须熟悉该语言的细微差别并理解推荐的做法。
    • 对于不熟悉该语言的用户来说,学习开发时间智能的 DAX 公式或管理复杂的过滤场景可能会带来困难。
  3. 有限的调试资源:Power BI 缺少用于 DAX 公式的功能强大的调试工具。如果没有特定的调试功能,诊断错误和理解复杂公式的行为可能是一项艰巨的任务。
    • 示例:在复杂的 DAX 计算中找出错误的根源可能需要系统的测试和隔离公式的各个部分的方法。
  4. 对数据模型的依赖:DAX 计算严重依赖于底层数据模型。对模型的修改,例如添加新表或关系,可能会影响当前的 DAX 公式并需要修改。
    • 示例:如果将新表添加到数据模型中,可能需要调整当前的 DAX 度量值以包含新数据。
  5. 缺乏递归函数支持:DAX 无法处理某些迭代计算,因为它不提供递归函数。此限制在使用递归或分层数据结构时出现。
    • 示例:如果您使用递归来探索分层结构,DAX 可能无法提供直接的答案;相反,您必须使用其他技术。