DAX 函数速查指南



DAX 函数 - 简介

DAX 代表**数**据**分**析**表**达式 (**D**ata **A**nalysis **E**xpressions)。DAX 是一种公式语言,它包含一系列函数、运算符和常量,可用于公式或表达式中计算并返回一个或多个值。DAX 是与 Microsoft Excel Power Pivot 数据模型和 Microsoft Power BI 关联的公式语言。

DAX 不是一种编程语言,而是一种公式语言,它允许用户在计算列和计算字段(也称为度量值)中定义自定义计算。DAX 帮助您根据数据模型中现有的数据创建新的信息。DAX 公式使您能够执行数据建模、数据分析,并将结果用于报告和决策。

要深入了解 DAX,请参阅本教程库中的教程 – DAX。

什么是 DAX 函数?

DAX 函数是 DAX 语言中提供的内置函数,使您能够对数据模型中表中的数据执行各种操作。

DAX 函数使您能够对数据模型执行常用数据计算。一些 DAX 函数的名称和功能与 Excel 函数相同,但已修改为使用 DAX 数据类型并与表和列一起使用,如下节所述。DAX 具有其他旨在处理关系数据并执行动态聚合的函数。

DAX 函数在使用 DAX 进行数据建模和报告中起着重要作用。

Excel 函数与 DAX 函数

Excel 函数和 DAX 函数之间存在一些相似之处和差异。以下是 Excel 函数和 DAX 函数的异同:

Excel 函数和 DAX 函数之间的相似之处

  • 某些 DAX 函数具有与 Excel 函数相同的名称和大致相同的行为。

  • DAX 具有与 Excel 中的数组和向量查找函数类似的查找函数。

Excel 函数和 DAX 函数之间的差异

  • DAX 函数已被修改为采用不同类型的输入,并且某些 DAX 函数可能会返回不同的数据类型。因此,即使它们具有相同的名称,也需要分别了解这些函数的用法。

  • 如果没有必要的修改,您不能在 Excel 公式中使用 DAX 函数,也不能在 DAX 公式中使用 Excel 函数。

  • Excel 函数以单元格引用或单元格范围作为引用。DAX 函数从不以单元格引用或单元格范围作为引用,而是以列或表作为引用。

  • Excel 的日期和时间函数返回一个表示日期的序列号的整数。DAX 日期和时间函数返回 DAX 中存在的 datetime 数据类型,而 Excel 中则没有。

  • Excel 没有返回表的函数,但某些函数可以使用数组。许多 DAX 函数可以轻松引用完整的表和列来执行计算并返回表或值列。DAX 的此功能增强了 Power Pivot、Power View 和 Power BI 的功能,这些工具都使用 DAX。

  • DAX 查找函数要求在各个表之间建立关系。

DAX 参数命名约定

DAX 具有标准参数名称,以方便使用和理解 DAX 函数。此外,您可以对参数名称使用某些前缀。如果前缀足够清晰,您可以将前缀本身用作参数名称。

您需要了解 DAX 参数命名约定,以便理解 DAX 函数的语法并正确使用所需参数的值。

有关详细信息,请参阅章节 - DAX 参数命名约定

DAX 函数的类型

DAX 支持以下类型的函数。

  • DAX 表值函数
    • DAX 筛选函数
    • DAX 聚合函数
    • DAX 时间智能函数
  • DAX 日期和时间函数
  • DAX 信息函数
  • DAX 逻辑函数
  • DAX 数学和三角函数
  • DAX 其他函数
  • DAX 父子关系函数
  • DAX 统计函数
  • DAX 文本函数
  • DAX 描述结构函数

DAX 表值函数

许多 DAX 函数以表作为输入或输出表,或者同时两者兼有。这些 DAX 函数称为 DAX 表值函数。因为表可以只有一列,所以 DAX 表值函数也以单列作为输入。您有以下类型的 DAX 表值函数:

  • DAX 聚合函数
  • DAX 筛选函数
  • DAX 时间智能函数

DAX 聚合函数

DAX 聚合函数对表的行的表达式进行聚合,在计算中非常有用。

有关详细信息,请参阅章节 - DAX 聚合函数

DAX 筛选函数

DAX 筛选函数返回与当前行相关的列、表或值。您可以使用 DAX 筛选函数返回特定数据类型、查找相关表中的值以及按相关值筛选。DAX 查找函数通过使用表及其之间的关系来工作。DAX 筛选函数使您能够操作数据上下文以创建动态计算。

有关详细信息,请参阅章节 - DAX 筛选函数

DAX 时间智能函数

DAX 时间智能函数返回日期表或使用日期表来计算聚合。这些 DAX 函数帮助您创建支持商业智能分析需求的计算,使您能够使用时间段(包括天、月、季度和年)来操作数据。

有关详细信息,请参阅章节 - DAX 时间智能函数

DAX 日期和时间函数

DAX 日期和时间函数类似于 Excel 日期和时间函数。但是,DAX 日期和时间函数基于 DAX 的 datetime 数据类型。

有关详细信息,请参阅章节 - DAX 日期和时间函数

DAX 信息函数

DAX 信息函数查看作为参数提供的单元格或行,并告知您值是否与预期类型匹配。

有关详细信息,请参阅章节 - DAX 信息函数

DAX 逻辑函数

DAX 逻辑函数返回有关表达式中值的的信息。例如,DAX TRUE 函数可让您知道您正在计算的表达式是否返回 TRUE 值。

有关详细信息,请参阅章节 - DAX 逻辑函数

DAX 数学和三角函数

DAX 数学和三角函数与 Excel 数学和三角函数非常相似。

有关详细信息,请参阅章节 - DAX 数学和三角函数

DAX 父子关系函数

DAX 父子关系函数可用于管理数据模型中以父子层次结构呈现的数据。

有关详细信息,请参阅章节 - DAX 父子关系函数

DAX 统计函数

DAX 统计函数与 Excel 统计函数非常相似。

有关详细信息,请参阅章节 - DAX 统计函数

DAX 文本函数

DAX 文本函数处理表和列。使用 DAX 文本函数,您可以返回字符串的一部分,在字符串中搜索文本或连接字符串值。您还可以控制日期、时间和数字的格式。

有关详细信息,请参阅章节 - DAX 文本函数

DAX 其他函数

这些 DAX 函数执行独特的操作,这些操作无法由大多数其他函数所属的任何类别定义。

有关详细信息,请参阅章节 - DAX 其他函数

DAX 函数描述结构

如果您必须在 DAX 公式中使用 DAX 函数,则需要详细了解该函数。您应该了解函数的语法、参数类型、函数返回的内容等。

在本教程中,所有 DAX 函数都使用通用的函数描述结构,以便您可以有效地阅读和解释 DAX 函数。

有关详细信息,请参阅章节 - DAX 函数描述结构

DAX 参数命名约定

DAX 具有标准参数名称,以方便使用和理解 DAX 函数。此外,您可以对参数名称使用某些前缀。如果前缀足够清晰,您可以将前缀本身用作参数名称。

要理解 DAX 函数的语法并适当地使用相关 DAX 函数参数的数据值,您需要了解 DAX 参数命名约定。

参数名称

以下是 DAX 标准参数名称:

序号 参数名称和描述
1

表达式

任何返回单个标量值的 DAX 表达式,其中表达式需要多次计算(针对每一行/上下文)。

2

任何返回单个标量值的 DAX 表达式,其中表达式需要在所有其他操作之前只计算一次。

3

任何返回数据表的 DAX 表达式。

4

表名

使用标准 DAX 语法的现有表名。它不能是表达式。

5

列名

使用标准 DAX 语法的现有列名,通常是完全限定的。它不能是表达式。

6

名称

将用于提供新对象名称的字符串常量。

7

顺序

用于确定排序顺序的枚举。

8

并列值

用于确定如何处理并列值的枚举。

9

类型

用于确定 PathItem 和 PathItemReverse 数据类型的枚举。

参数名称前缀或仅使用前缀

您可以使用前缀限定参数名称:

  • 前缀应描述参数的使用方式。

  • 前缀应避免参数的歧义解读。

例如:

  • **Result_ColumnName** - 指的是用于在 DAX LOOKUPVALUE() 函数中获取结果值的现有列。

  • **Search_ColumnName** - 指的是用于在 DAX LOOKUPVALUE() 函数中搜索值的现有列。

如果前缀足够清晰地描述参数,您可以省略参数名称,只使用前缀。省略参数名称并只使用前缀有时可以帮助避免阅读过程中的混乱。

例如,考虑一下DATE (Year_value, Month_value, Day_value)。您可以省略参数名-值,因为它们重复了三次,可以写成 DATE (Year, Month, Day)。如您所见,只使用前缀可以使函数更易读。但是,有时为了清晰起见,必须同时使用参数名和前缀。

例如,考虑一下Year_columnName。参数名为ColumnName,前缀为Year。两者都需要让用户理解该参数需要引用一个现有的年份列。

DAX 函数 - 描述结构

如果您必须在 DAX 公式中使用 DAX 函数,则需要详细了解该函数。您应该了解函数的语法、参数类型、函数返回的内容等。

为了让您了解如何阅读和解释DAX函数,本教程使用统一的函数描述结构。

  • 不同类型的DAX函数按DAX函数的类型名称分组为章节。

  • 每一章都简要描述了相应类型DAX函数的实用性。

  • 简要描述之后是对应于该章节的DAX函数列表(DAX函数的类型/类别)。

  • 每个DAX函数名称都链接到DAX函数详细信息,这些详细信息具有以下DAX函数描述结构:

    • 描述
    • 语法
    • 参数
    • 返回值
    • 备注
    • 示例

以下部分解释了每个DAX函数解释中出现的每个标题。

描述

在“描述”部分,您将了解DAX函数的功能及其用途。

如果DAX函数是在Excel 2016中引入的,则此处也会提及。(其余DAX函数存在于Excel 2013中。)

语法

在“语法”部分,您将了解确切的函数名称和相应参数。

  • DAX函数名称以大写字母表示。

  • DAX函数名称后跟左括号。

  • 每个参数都遵循标准的DAX参数命名约定,并用尖括号括起来。

  • 如果参数是可选的,则将其进一步用方括号括起来。

  • 参数之间用逗号分隔。

  • 省略号…用于显示参数的可选重复次数。

  • 函数语法以右括号结尾。

示例

Syntax

参数

在“参数”部分,特定DAX函数的每个参数都与其描述一起列在一个表中。例如,上面示例DAX函数SELECTCOLUMNS的参数列在以下表格中。

序号 参数 & 描述
1

表格

表格或返回表格的DAX表达式。

2

名称

赋予列的名称,用双引号括起来。

3

标量表达式

返回标量值的DAX表达式,例如列引用、整数或字符串值。

返回值

在“返回值”部分,您将了解DAX函数将返回的值及其数据类型。

备注

在“备注”部分,您将了解有关DAX函数用法所需了解的任何额外信息。您还将了解潜在的错误及其原因。

示例

本节给出了DAX函数用法的示例。

注意 - 当您使用参数的数据值编写DAX函数时,请遵循以下命名约定:

  • 表名按其在数据模型中显示的方式指定。例如,Sales。

  • 列名按其在数据模型中显示的方式指定,并用方括号括起来。

    例如,[Sales Amount]

    • 建议使用列的完全限定名称,即列名前缀包含它的表名。

      例如,Sales[Sales Amount]

    • 如果表名包含空格,则应将其用单引号括起来。

      例如,‘East Sales’[Sales Amount]

  • DAX函数可以返回列或表的值,在这种情况下,它需要用作另一个需要列或表的DAX函数的参数。

DAX 函数 - 聚合

DAX 聚合函数对表的行的表达式进行聚合,在计算中非常有用。

以下是DAX聚合函数:

DAX 函数 - 筛选

您可以使用DAX筛选器函数返回特定数据类型,查找相关表中的值以及按相关值筛选。查找函数通过使用表以及它们之间的关系来工作。筛选器函数使您可以操作数据上下文以创建动态计算。

以下是DAX筛选器函数:

DAX 函数 - 时间智能

DAX时间智能函数可帮助您创建支持商业智能分析需求的计算,使您可以使用时间段(包括天、月、季度和年)来操作数据。

以下是DAX时间智能函数:

DAX 函数 - 日期和时间

DAX日期和时间函数类似于Excel日期和时间函数。但是,DAX日期和时间函数基于DAX日期时间数据类型。

以下是DAX日期和时间函数:

DAX 函数 - 信息

DAX信息函数查看作为参数提供的数值或列,并告诉您该值是否与预期类型匹配。

以下是DAX信息函数:

DAX 函数 - 逻辑

DAX逻辑函数根据对相关参数执行的逻辑运算返回逻辑值(TRUE/FALSE)。

以下是DAX逻辑函数:

数学和三角函数

DAX 数学和三角函数与 Excel 数学和三角函数非常相似。

以下是DAX数学和三角函数:

DAX 函数 - 父子关系

DAX 父子关系函数可用于管理数据模型中以父子层次结构呈现的数据。

以下是 DAX 父子关系函数:

DAX 函数 - 统计

DAX 统计函数与 Excel 统计函数非常相似。

以下是 DAX 统计函数:

DAX 函数 - 文本

DAX 文本函数用于处理表格和列。使用 DAX 文本函数,您可以返回字符串的一部分,在字符串中搜索文本或连接字符串值。您还可以控制日期、时间和数字的格式。

以下是 DAX 文本函数:

DAX 函数 - 其他

这些 DAX 函数执行独特的操作,无法用大多数其他 DAX 函数所属的任何类别来定义。

以下是 DAX 其他函数:

广告