DAX函数交互式词典
交互式 DAX 函数词典 DAX 关键函数的简洁分析手册。 聚合函数 迭代函数 (X) 上下文和筛选器 逻辑函数 时间智能 1.
聚合函数 聚合函数对值列执行计算并返回单个结果。它们是 DAX 中大多数度量的基础,用于汇总数据,例如求和、平均值或计数。它们在当前的筛选器上下文内工作,这意味着它们的输出会根据报告中进行的筛选动态调整。 SUM 计算列中所有数字的总和。 分析使用示例: 复制 Całkowita Sprzedaż = SUM(FactSales[SalesAmount]) 实际应用: 此度量值从 'FactSales' 表格的所有交易中聚合总销售额,可根据筛选条件(例如按年份、产品、区域)动态响应。 AVERAGE 返回列中所有数字的算术平均值。 分析使用示例: 复制 Średnia Wartość Zamówienia = AVERAGE(FactSales[SalesAmount]) 实际应用: 计算单笔销售交易的平均价值,这是商业分析中的关键绩效指标(KPI)。 DISTINCTCOUNT 统计列中的唯一值数量。 分析使用示例: 复制 Liczba Aktywnych Klientów = DISTINCTCOUNT(FactSales[CustomerKey]) 实际应用: 它能够确定在特定时期内购买了多少个独特的客户,这对于分析客户群和留存率至关重要。 2.
迭代函数(X函数) 迭代函数被称为“X函数”,它们会遍历指定表中的每一行,并对每一行执行定义的表达式。完成迭代后,它们会聚合获取的结果(例如求和或查找最大值)。这提供了巨大的灵活性,能够创建使用标准聚合函数无法实现的复杂计算。 SUMX 返回计算表中的每一行的表达式的总和。 分析使用示例: 复制 Przychód Brutto = SUMX(FactSales, FactSales[OrderQuantity] * FactSales[UnitPrice]) 实际应用: 通过将每行交易的数量乘以单价,然后求和来计算总收入。当没有预先计算的收入列时,这非常必要。 AVERAGEX 计算表中的每一行的表达式的平均值。 分析使用示例: 复制 Średnia Marża % = AVERAGEX(FactSales, (FactSales[UnitPrice] - FactSales[UnitCost]) / FactSales[UnitPrice]) 实际应用: 它允许计算交易级别的平均利润率。该函数首先为每一行计算利润,然后对这些结果取平均值,从而提供精确的盈利能力视图。 FILTER 根据指定的逻辑条件,返回一个作为另一个表的子集组成的表。 分析使用示例: 复制 Sprzedaż Dużych Zamówień = SUMX(FILTER(FactSales, FactSales[OrderQuantity] > 10), FactSales[SalesAmount]) 实际应用: 它用于创建虚拟的、经过筛选的表,然后由另一个函数(此处为 SUMX)使用。此度量值计算的是仅针对订单数量超过 10 个单位的销售额总和。 3.
上下文函数和筛选器修饰符 这些功能是 DAX 语言的核心,它们允许操作计算上下文。筛选器上下文是一组影响度量值结果的活动筛选器。通过像 CALCULATE 这样的函数,可以修改此上下文,添加新的筛选器、删除现有筛选器或完全忽略它们,从而实现高级比较和情景分析。 CALCULATE 在修改后的筛选器上下文中计算表达式;这是 DAX 中最重要、功能最强大的函数。 分析使用示例: 复制 Sprzedaż w Polsce = CALCULATE([Całkowita Sprzedaż], DimGeography[Country] = "Polska") 实际应用: 此度量值计算 [Całkowita Sprzedaż] 的值,但忽略了所有现有的国家筛选器,并应用了自己固定的“Polska”筛选器。这使得即使报告中有其他选择,也能计算出特定国家的销售额。 ALL 返回表中的所有行或列中的所有值,忽略任何应用的筛选器。 分析使用示例: 复制 % Udziału w Całości = DIVIDE([Całkowita Sprzedaż], CALCULATE([Całkowita Sprzedaż], ALL(DimProduct))) 实际应用: 计算给定产品(或类别)的销售额占所有产品总销售额的百分比份额。ALL 函数移除了分母中产品表上的筛选器,因此它始终引用总计。 RELATED 获取关系“一”侧相关表中的值。 分析使用示例(计算列): 复制 Kategoria Produktu = RELATED(DimProductCategory[CategoryName]) 实际应用: 最常用于计算列以进行数据反范式化的功能。在产品表中,此公式会创建一个新列,为每个产品从相关的分类表中获取其所属的类别名称。 4.
逻辑和信息函数 这些函数允许将条件逻辑引入度量值和计算列,并检查值的状态。它们能够创建依赖于满足特定标准、处理错误(例如除以零)或根据定义的业务规则对数据进行分类的动态结果。 IF 检查条件,如果为真则返回一个值,如果为假则返回另一个值。 分析使用示例: 复制 目标达成状态 = IF([总销售额] > 1000000, "已达成目标", "低于目标") 实际应用: 允许简单地对结果进行分类。此度量值根据总销售额是否超过定义的百万阈值返回文本状态。 SWITCH 根据值列表评估表达式,并返回多个可能结果中的一个;它是嵌套IF函数的更易读的替代方案。 分析使用示例(计算列): 复制 Segment Klienta = SWITCH(TRUE(), 'DimCustomer'[TotalPurchases] > 100, "Złoty", 'DimCustomer'[TotalPurchases] > 50, "Srebrny", "Brązowy" ) 实际应用: 非常适合进行分段。此计算列公式根据购买次数为客户分配了细分市场("Złoty", "Srebrny", "Brązowy")。 ISBLANK 检查值是否为空,并返回TRUE或FALSE。 分析使用示例: 复制 Liczba Klientów bez Email = COUNTROWS(FILTER('DimCustomer', ISBLANK('DimCustomer'[EmailAddress]))) 实际应用: 用于数据质量控制。此度量值计算了数据库中没有分配电子邮件地址的客户数量,这可能表明需要补充数据。 5.
时间函数(时间智能) 时间智能函数简化了基于日期的计算。它们可以轻松比较不同时间段的数据,例如同比增长(YOY)、季度环比(QoQ)或计算累计总和(YTD)。这些函数的运行需要数据模型中标记为日期表的正确日历表。 TOTALYTD 计算从年初到当前筛选上下文最后日期的表达式值。 分析使用示例: 复制 Sprzedaż YTD = TOTALYTD([Całkowita Sprzedaż], 'DimDate'[Date]) 实际应用: 用于跟踪年度目标实现进度的关键指标。显示从本年年初到选定日期的累计销售额(例如,当前月份)。 SAMEPERIODLASTYEAR 返回前一年对应时间段的日期集合。 分析使用示例: 复制 Sprzedaż w Poprzednim Roku = CALCULATE([Całkowita Sprzedaż], SAMEPERIODLASTYEAR('DimDate'[Date])) 实际应用: 对于分析同比增长(YOY)的增长动态至关重要。此度量值允许将当前期间(例如 2023 年 7 月)的销售额与前一年同期(2022 年 7 月)的销售额进行直接比较。 DATEADD 将日期集向前或向后移动指定的间隔。 分析用例: 复制 Sales in Previous Month = CALCULATE([Total Sales], DATEADD('DimDate'[Date], -1, MONTH)) 实际应用: 比其他时间函数更灵活,可用于与任何偏移的时间段进行比较。用于计算月环比(MoM)增长或与上个季度进行比较。 © 2025 DAX 函数互动词典。保留所有权利。