DAX公式教程:数据模型高级计算语言入门指南

作者:技术拾光

时间:2026-05-09

浏览:428

DAX是数据模型中的高级计算语言,支持动态聚合、跨表计算和时间分析。其核心操作包括创建上下文敏感的度量值、定义计算列、构建计算表,以及应用时间智能函数进行周期对比。使用变量还能提升公式可读性与性能。掌握这些方法有助于充分发挥数据模型的潜力。

文章目录

想在Power BI或Analysis Services中实现动态聚合、跨表计算与时间智能分析?掌握DAX公式是必经之路。它如同数据模型中的“高级编程语言”,运用得当能让数据真正“活”起来。以下五个核心操作路径,是您从入门到精通的实战指南。

DAX公式教程:数据模型高级计算语言入门指南

一、创建度量值进行动态聚合计算

度量值是DAX的核心,其特点是“上下文敏感”。计算结果并非固定,而是随着报表中筛选器、切片器或行列分组的改变而动态变化。它尤其适用于求和、求平均、计数等聚合场景。

操作简便:在Power BI Desktop的“模型”视图中,右键任意表,选择“新建度量值”。随后,在公式栏中输入标准语法,例如:总销售额 = SUM(Sales[Amount])。输入时编辑器会提供智能提示与括号匹配检查。确认无误后,该度量值将自动出现在字段窗格中,可直接拖拽至图表使用。

二、定义计算列实现行级静态派生

与动态的度量值不同,计算列是“静态”的。它在数据刷新时一次性计算完成,结果直接存储在模型内,每行对应一个值。这非常适用于基于当前行进行逻辑判断或格式转换,例如计算利润率、拼接字段等。

操作步骤:在“数据”视图中右键目标表,选择“新建列”。输入表达式时,列名需用方括号括起。例如:销售利润率 = DIVIDE(Sales[Profit], Sales[Revenue], 0)。若需引用关联表字段,可使用RELATED函数,如:产品类别 = RELATED('Product'[Category])。回车后,新列将立即填充所有行的值,之后便可像普通列一样用于筛选或分组。

三、构建计算表生成衍生维度或汇总结果

计算表允许您使用DAX公式“从无到有”地创建一个完整的表对象。这在创建独立的日期表、分类映射表,或预先聚合中间结果时极为有用,完全不受原始数据结构的限制。

创建方法:在“建模”选项卡中点击“新建表”。在公式编辑框中,可使用CALENDAR、DATATABLE等表构造函数。例如,创建一个日期表:日期表 = CALENDAR(DATE(2020,1,1), DATE(2025,12,31))。随后,可使用ADDCOLUMNS函数为其添加“年份”、“季度”等派生列。关键一步是:选中新建的表,在“表工具”中将其“标记为日期表”,并指定日期列。这是后续时间智能函数正确工作的前提。

四、应用时间智能函数处理周期对比

同比、环比、累计至今等关键业务分析,都依赖于时间智能函数。使用它们的前提是:模型中已有一个标记好的日期表,并且该日期表与事实表之间通过日期列建立了有效的(通常是单向的)活动关系。

条件满足后,新建度量值并直接调用函数即可。例如,使用TOTALYTD计算年累计销售额:年累计销售额 = TOTALYTD(SUM(Sales[Amount]), '日期表'[Date])。使用SAMEPERIODLASTYEAR计算去年同期数据:去年同期销售额 = CALCULATE(SUM(Sales[Amount]), SAMEPERIODLASTYEAR('日期表'[Date]))。将这些度量值与日期表的年、月字段一同放入矩阵或折线图,系统便会根据您选择的日期范围自动计算。

五、利用变量提升公式可读性与复用性

当公式逻辑变得复杂时,层层嵌套的函数会降低可读性。此时,变量(VAR)便至关重要。它不仅能避免重复计算同一子表达式以提升性能,更能使复杂逻辑清晰易懂,便于调试。

使用方法:在新建度量值或计算列时,使用VAR关键字声明变量。您可以连续声明多个变量,且后面的变量可以引用前面已定义的变量。例如:

VAR CurrentYearSales = SUM(Sales[Amount])
VAR PriorYearSales = CALCULATE([CurrentYearSales], SAMEPERIODLASTYEAR('日期表'[Date]))

所有变量必须在RETURN语句前定义完毕。最后,在RETURN后面写出最终要返回的表达式,例如计算增长率:RETURN DIVIDE(CurrentYearSales - PriorYearSales, PriorYearSales)。执行时,每个变量仅计算一次,最终结果为RETURN后面的表达式值。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章