DATA ANALYSIS EXPRESSSIONS · 数据分析表达式

DAX

Power Pivot 与 Power BI 背后的公式语言

语法长得像 Excel 公式,思维方式像 SQL,血统源自 MDX (Multidimensional Expressions,多维表达式)—— 看着眼熟,用起来要重新开窍。

像 Excel 公式SUM / IF / AVERAGE 同名同形,平滑上手
像 SQL筛选 → 分组 → 聚合,同一套表格思维
源自 MDXMultidimensional Expressions(多维表达式),继承其上下文求值与时间智能思想
01 / 是什么

DAX 是一门"写在表格里的分析语言"

DAX(Data Analysis Expressions,数据分析表达式)是微软为数据建模打造的公式语言, 2010 年随 Excel 加载项 Power Pivot 诞生,2016 起内置于 Microsoft 365, 后来也成为 Power BI 的官方语言——两者共用同一个列式内存引擎 VertiPaq。 它的任务只有一个:在多张相互关联的表之上,快速完成筛选、聚合与复杂指标计算。

🧩

它住在哪

Power Pivot 的度量值与计算列、Power BI 的模型里。Excel 2016+ 均内置,在「Power Pivot」选项卡中启用。

📊

它算什么

订单表 × 商品表 × 用户表的跨表指标:转化率、客单价、同比环比、累计销量……

⚡

它凭什么快

VertiPaq 列式压缩引擎把数据装进内存,百万行级别依旧秒级响应,普通公式表望尘莫及。

🌉

它通向哪

学会 DAX = 同时拿到 Power BI 的入场券。概念、函数、建模思路 100% 互通。

02 / 三大亲属

同一道题,三种语言的答案

需求:算出「直播渠道」的销售额。点击下方标签,看三种语言各自的写法与脾气。

=SUMIFS(销售[金额], 销售[渠道], "直播")

脾气:写在某个单元格里,答案就钉死在那里。明天想看"搜索渠道"?得再写一条公式。 换个角度、换张报表,公式跟着换——费时且易错。

// 定义一次,处处生效 —— 这叫"度量值" 直播销售额 := CALCULATE( SUM(销售[金额]), 销售[渠道] = "直播" )

脾气:公式只写一遍,放进透视表后,行是连衣裙就按连衣裙算,列是 3 月就按 3 月算—— 结果永远跟着当前筛选范围自动重算。这是 Excel 公式给不了的"活的计算"。

SELECT SUM(金额) FROM 销售 WHERE 渠道 = '直播';

脾气:向数据库发一次查询,拿回一个静态结果。DAX 借用了它"筛选→聚合"的思维, 但把 WHERE 藏进了"筛选上下文",不用每次手写。

📌 血统补充:DAX 为 SQL Server 分析服务(SSAS)表格模型而生,继承了前辈 MDX(Multidimensional Expressions,多维表达式)的上下文求值与时间智能思想。MDX 是微软 1997 年前后为多维数据集(OLAP 立方体)设计的查询语言,长期服务于 SSAS 多维模型与早期的 Excel 数据透视表;DAX 则面向更新的「表格模型」,语法比 MDX 亲民得多——所以现在没人用 MDX 启蒙,大家都从 DAX 入门建模。

03 / 核心特点

四个特点,一个灵魂

① 列式思维

操作对象是整列 销售[金额],不再有 A1、B2 单元格引用。 一句公式描述"整列怎么聚合",而不是"这个格子怎么算"。

② 筛选上下文

灵魂所在:同一个度量值,放进透视表的不同行列,自动在"当前这片筛选区域"里重新计算。 公式不变,结果随位置而变。

③ 度量值 + DIVIDE

比率类指标(转化率、客单价)用度量值定义,透视表每个角落都按正确口径重算, 永远不会犯"把各商品转化率直接加总"的错误。

④ 时间智能

TOTALYTD 累计至今、SAMEPERIODLASTYEAR 去年同期—— 同比、环比、年度累计,一行公式搞定,Excel 公式要绕一大圈。

互动演示 A · 转化率之辨呼应讲义 2.2.5 口径重点

三个商品的访客与支付数据如下。切换两种算法,看看"合计行"的转化率差多少—— 这正是普通透视表和 DAX 度量值的本质区别。(教学演示数据)

商品访客数支付买家数转化率 = 支付买家数 ÷ 访客数
连衣裙8,0006408.00%
休闲裤5,0002505.00%
凉鞋2,000603.00%
合计15,00095016.00%
✗ 16.00% 是错的。比率之间不能直接相加:8% + 5% + 3% 毫无业务含义。 普通透视表把"转化率"拖进值字段时,默认求和就会得到这个荒唐数字。
// 用度量值定义一次,透视表合计行自动得到正确答案 支付转化率 := DIVIDE( SUM(销售[支付买家数]), SUM(销售[访客数]) )

互动演示 B · 筛选上下文:公式不变,结果变

下面是 8 笔订单明细。先记住唯一的度量值定义:支付金额 := SUM(销售[金额])。 点击筛选按钮,观察两件事:① 匹配的订单被"圈进"当前上下文;② 右侧结果自动重算—— 但度量值公式从头到尾一个字都没改。

商品:
渠道:
订单号商品渠道金额
当前筛选上下文下的 · 支付金额
¥1,862
全部订单(8 笔)
支付金额 := SUM(销售[金额]) —— 公式始终未变
💡 这就是"筛选上下文":透视表的每个行列交叉点,都是一片独立的筛选区域; DAX 在每片区域里把同一条公式重算一遍。理解了这句话,DAX 就入门了一半。
04 / 未来工作中的价值

用的人不多,会用的很值钱

在十亿级 Excel 用户中,Power Pivot 属于小众高级功能——大多数人的它仍在"沉睡"; 但在数据分析岗位上,"高级 Excel"基本就是 Power Query + Power Pivot + DAX 的代名词。

≈95%
商业分析师岗位 JD 中要求 Excel
招聘市场观察 · 2025
4–6 个月
DAX 熟练期(中高级岗位门槛)
行业技能路径调研 · 2025
1 门语言
同时通吃 Excel 建模与 Power BI
同一 VertiPaq 引擎 · 微软官方设计
百万行
内存列式引擎轻松处理的数据量级
普通工作表上限 1,048,576 行且透视卡顿
💰 财务 / FP&A 分析师
★★★★★

最大用户群体。总账、预算、实际三表关联,月度合并报表几十万行,不想装 BI 工具——Power Pivot 是他们的"贴身数据仓库"。

📈 数据 / 商业分析师
★★★★★

Power Query 清洗 → Power Pivot 建模 → 透视表出数,是简历上"高级 Excel"的标准注脚,也是面试高频考点。

🛒 电商 / 运营分析师
★★★☆☆

订单表 + 商品表 + 用户表 + 流量表跨表关联分析——正是本课程反复出现的场景,学完即可迁移上岗。

🔧 BI 开发者
★★★★☆

把 Power Pivot 当作 Power BI 的"训练场":DAX、数据模型、星型结构完全一致,迁移近乎零成本。

🎓 技能迁移地图:一份投入,多份回报

DAX你在这里
→
Power BI同语言同引擎,直接上手
→
SQL 思维筛选/分组/聚合早已内化
→
数据建模思维任何 BI 工具通用的底层能力
⚖️ 一句话定位:会透视表,说明"会用 Excel";会 DAX,说明"懂数据建模"—— 这正是许多企业划分中级与高级分析师的那条线。
05 / 学习路线

从 Excel 公式到 DAX 的四级台阶

函数迁移约 1–2 周

把认识的 SUM、AVERAGE、IF 直接搬进 DAX 用,建立"我会一半"的信心; 同时接受第一个新规则:引用整列 销售[金额],而不是单元格。

迭代与聚合约 2–4 周

认识 SUMX / DIVIDE 等"逐行计算再聚合"的迭代函数,理解"先乘后加"为什么必须用 X 结尾的函数。

吃透两种上下文约 1–2 月 · 最大的一坎

行上下文与筛选上下文,以及改变上下文的钥匙 CALCULATE。 建议把上方"演示 B"玩到能向同学讲明白为止。

度量值实战约 2–3 月

动手建一个电商模型:订单、商品、日期三表关联,写支付转化率、客单价、同比环比度量值, 全部对照本课程 2.2.5 节的指标口径逐个验证。

给未来的你:这门语言不会过时,只会搬家。

从 Power Pivot 到 Power BI,再到 Azure 分析服务,VertiPaq 引擎与 DAX 已是微软整个自助式 BI 体系的通用语。 今天在 Excel 里写下的每一条度量值,都是明天简历上的硬技能。