Dax Functions 简明教程
DAX Functions - Introduction
DAX 的全称是 *D*ata *A*nalysis E*x*pressions(数据分析表达式)。DAX 是一种公式语言,是一个用于公式或表达式中的函数、运算符和常量的集合,可以计算并返回一个或多个值。DAX 是与 Microsoft Excel Power Pivot 的数据模型以及 Microsoft Power BI 相关联的公式语言。
DAX 不是一种编程语言,而是一种公式语言,它允许用户在计算列和计算字段(也称为度量)中定义自定义计算。借助 DAX,你可以使用数据模型中现有数据创建新的信息。DAX 公式使你可以执行数据建模、数据分析,并使用结果进行报告和决策。
有关 DAX 的深入理解,请参阅本教程库中有关 DAX 的教程。
What is a DAX Function?
DAX 函数是一种内置函数,它在 DAX 语言中提供,使你可以对数据模型中表格中的数据执行各个操作。
DAX 函数使你可以对数据模型执行常用的数据计算。某些 DAX 函数的名称及其功能与 Excel 函数的相同,但已修改为使用 DAX 数据类型并与表格和列一起使用,如下节中所突出显示的那样。DAX 附加了一些旨在与关系数据一起使用并执行动态聚合的函数。
DAX 函数在使用 DAX 进行数据建模和报告中发挥着重要作用。
Excel Functions vs. DAX Functions
Excel 函数与 DAX 函数之间存在某些相似之处,但也存在某些差异。以下是 Excel 函数和 DAX 函数之间的相似之处和差异 -
Similarities Between Excel Functions and DAX Functions
-
某些 DAX 函数的名称和通用行为与 Excel 函数相同。
-
DAX 具有类似于 Excel 中数组和矢量查找函数的查找函数。
Differences Between Excel Functions and DAX Functions
-
已修改 DAX 函数以获取不同类型的输入,而某些 DAX 函数可能会返回不同的数据类型。因此,您需要分别了解这些函数的使用方法,尽管它们名称相同。
-
您不能在 Excel 公式中使用 DAX 函数,或在 DAX 公式中使用 Excel 函数,而无需进行必要的修改。
-
Excel 函数将单元格引用或一组单元格作为引用。DAX 函数从不将单元格引用或一组单元格作为引用,而是将一列或一个表作为引用。
-
Excel 日期和时间函数返回一个整数,表示一个日期作为一个序列号。DAX 日期和时间函数返回一个在 DAX 中但不在 Excel 中的数据类型 datetime。
-
Excel 没有返回表格的函数,但某些函数可以处理数组。许多 DAX 函数都可以轻松引用完整的表格和列来执行计算并返回一个表格或一列值。DAX 的这种能力为 Power Pivot、Power View 和使用 DAX 的 Power BI 增加了功能。
-
DAX 查找函数要求在各个表之间建立关系。
DAX Parameter Naming Conventions
DAX 拥有标准的参数名称来帮助使用和理解 DAX 函数。此外,您可以在参数名前使用特定前缀。如果前缀清晰易懂,您可以使用前缀本身作为参数名。
您需要了解 DAX 参数的命名约定,以便了解 DAX 函数的语法并正确使用所需参数的值。
有关详细信息,请参阅第 {} 章。
Types of DAX Functions
DAX 支持以下类型的函数。
-
DAX 表值函数 DAX 筛选器函数 DAX 聚合函数 DAX 时间智能函数
-
DAX 日期和时间函数
-
DAX Information Functions
-
DAX Logical Functions
-
DAX 数学和三角函数
-
DAX Other Functions
-
DAX 父子函数
-
DAX Statistical Functions
-
DAX Text Functions
-
DAX Description Structure Functions
DAX Table-Valued Functions
许多 DAX 函数将表格作为输入或输出表格,或者同时进行。这些 DAX 函数称为 DAX 表值函数。由于表格可以只有一列,因此 DAX 表值函数也接受单列作为输入。您有以下类型的 DAX 表值函数 -
-
DAX Aggregation functions
-
DAX Filter functions
-
DAX Time intelligence functions
DAX Filter Functions
DAX 筛选器函数返回列或表格或与当前行相关的值。您可以使用 DAX 筛选器函数返回特定的数据类型,查找相关表格中的值,并按相关值进行筛选。DAX 查找函数通过使用表格和它们之间的关系来工作。DAX 筛选器函数使您能够操作数据上下文以创建动态计算。
有关详细信息,请参阅第 {} 章。
DAX Time Intelligence Functions
DAX 时间智能函数返回一个包含日期的表格,或使用一个日期表格计算聚合结果。这些 DAX 函数可帮助您创建计算结果,满足商业智能分析需求,让您使用时间段(包括天、月、季度和年)操作数据。
有关详细信息,请参阅章节 DAX Time Intelligence functions 。
DAX Date and Time Functions
DAX 日期和时间函数与 Excel 日期和时间函数类似。但是,DAX 日期和时间函数基于 DAX 的 datetime 数据类型。
有关详细信息,请参阅章节 DAX Date and Time functions 。
DAX Information Functions
DAX 信息函数查看以参数形式提供的单元格或行,并告知您该值是否与预期类型匹配。
有关详细信息,请参阅章节 DAX Information functions 。
DAX Logical Functions
DAX 逻辑函数返回表达式中值的信息。例如,DAX TRUE 函数让您知道正在计算的表达式是否返回 TRUE 值。
有关详细信息,请参阅章节 DAX Logical functions 。
DAX Math and Trig Functions
DAX 数学和三角函数与 Excel 的数学和三角函数非常相似。
有关详细信息,请参阅章节 DAX Math and Trig functions 。
DAX Parent and Child Functions
DAX 父子函数用于管理以数据模型中父子层次结构呈现的数据。
有关详细信息,请参阅章节 DAX Parent and Child functions 。
DAX Text Functions
DAX 文本函数处理表格和列。使用 DAX 文本函数,您可以返回字符串的一部分,在字符串中搜索文本,或连接字符串值。您还可以控制日期、时间和数字的格式。
有关详细信息,请参阅章节 DAX Text functions 。
DAX Function Description Structure
如果您需要在 DAX 公式中使用 DAX 函数,那么您需要详细地了解该函数。您应当了解该函数的语法、参数类型、该函数返回的内容,等等。
本教程为所有 DAX 函数采用统一的函数描述结构,以便您能有效阅读和理解 DAX 函数。
请参阅章节 − DAX Function Description Structure 了解详细信息。
DAX Parameter Naming Conventions
DAX 拥有标准的参数名称来帮助使用和理解 DAX 函数。此外,您可以在参数名前使用特定前缀。如果前缀清晰易懂,您可以使用前缀本身作为参数名。
在理解 DAX 函数的语法并正确使用数据值来获取相关的 DAX 函数参数之前,您需要理解 DAX 参数的命名规则。
Parameter Names
以下为 DAX 的标准参数名称:
Sr.No. |
Parameter Name & Description |
1 |
expression 返回单个标量值的任何 DAX 表达式,其中这个表达式将被评估多次(针对每一行/语境)。 |
2 |
value 返回单个标量值的任何 DAX 表达式,其中这个表达式将在所有其他操作之前准确评估一次。 |
3 |
table 返回数据表格的任何 DAX 表达式。 |
4 |
tableName 使用标准 DAX 语法存在的表名。它不能是一个表达式。 |
5 |
columnName 使用标准 DAX 语法存在的列名,通常为完全限定。它不能是一个表达式。 |
6 |
name 将用于提供新对象名称的字符串常量。 |
7 |
order 用于确定排序顺序的枚举。 |
8 |
ties 用于处理相同值的情况的枚举。 |
9 |
type 用于确定 PathItem 和 PathItemReverse 的数据类型的枚举。 |
Prefixing Parameter Names or Using the Prefix Only
您可以用前缀来限定参数名称:
-
前缀应描述如何使用参数。
-
应这样设置前缀,以避免参数的模棱两可。
例如,
-
Result_ColumnName − 指向用于获取 DAX LOOKUPVALUE () 函数中的结果值的现有列。
-
Search_ColumnName − 指向用于在 DAX LOOKUPVALUE () 函数中搜索值的现有列。
如果前缀足够明确地描述参数,你就可以省略参数名称而仅使用前缀。有时,省略参数名称且仅使用前缀有助于避免在阅读期间产生杂乱。
例如,考虑 DATE (Year_value, Month_value, Day_value) 。你可以省略参数名称 - value(重复三次),并将其写为 DATE (Year, Month, Day)。正如所见,仅通过使用前缀,函数就更具可读性。但是,有时为了更清楚地理解,参数名称和前缀必须同时存在。
例如,考虑 Year_columnName 。参数名称是 ColumnName,前缀是 Year。两者同时存在是为了让用户理解此参数需要现有年份列的引用。
DAX Functions - Description Structure
如果您需要在 DAX 公式中使用 DAX 函数,那么您需要详细地了解该函数。您应当了解该函数的语法、参数类型、该函数返回的内容,等等。
为方便您理解如何阅读和解释 DAX 函数,本教程采用了统一的函数描述结构。
-
不同类型的 DAX 函数按 DAX 函数的类型名称分章分组。
-
每章提供相关类型 DAX 函数实用程序的简要描述。
-
简要描述之后是与该章节(DAX 函数的类型/类别)对应的 DAX 函数列表。
-
每个 DAX 函数名称都超链接到 DAX 函数详细信息,其中包含以下 DAX 函数描述结构 - 说明语法参数返回值备注示例
以下部分说明每个 DAX 函数说明中出现的各个标题。
Description
在说明部分,您将学习 DAX 函数是什么以及它可以在哪里使用。
如果 DAX 函数是在 Excel 2016 中引入的,这里也会提到。(其他 DAX 函数存在于 Excel 2013 中。)
Syntax
在语法部分,你将了解确切的功能名称和相关参数。
-
DAX 函数名称以大写字母给出。
-
DAX 函数名称后面跟开括号。
-
每个参数都遵循标准的 DAX 参数命名约定,并用尖括号括起来。
-
如果参数是可选的,则进一步用方括号括起来。
-
参数以逗号分隔。
-
省略号 … 用于显示可重复次数的参数。
-
函数语法以闭合的括号结束。
DAX Functions - Filter
你可以使用 DAX 筛选器函数来返回特定的数据类型、查找相关表格中的值以及根据相关值进行筛选。查找函数可以通过使用表格及其之间的关系来进行工作。筛选器函数使你可以处理数据上下文以创建动态计算。
以下是 DAX 筛选器函数
DAX Functions - Time Intelligence
DAX 计时智能函数可帮助您创建计算,这些计算通过使用时间段(包括天、月、季度和年)操纵数据来满足商业智能分析需求。
以下是 DAX 计时智能函数
DAX Functions - Date and Time
DAX 日期和时间函数类似于 Excel 的日期和时间函数。但是,DAX 的日期和时间函数基于 DAX datetime 的数据类型。
以下为 DAX 的日期和时间函数:
DAX Functions - Text
DAX 文本函数与表和列一起使用。使用 DAX 文本函数,你可以返回部分字符串,搜索字符串中的文本或连接字符串值。还可以控制日期、时间和数字的格式。
以下是 DAX 文本函数 -