跳到主要内容

Power BI 核心功能

问题

Power BI 的核心能力是什么?DAX 和 Power Query 分别怎么用?

答案

Power BI 三大核心

Power Query(M 语言)

Power Query 负责数据获取和清洗,类似 ETL 工具。

常用操作说明
删除列/行去除不需要的数据
筛选行按条件过滤
更改类型文本→日期、文本→数字
合并查询类似 SQL JOIN
追加查询类似 UNION ALL
透视/逆透视行列转换
分组依据类似 GROUP BY
Power Query M 语言示例
// 加载 CSV → 筛选 → 转类型 → 添加列
let
Source = Csv.Document(File.Contents("sales.csv")),
// 筛选2024年数据
Filtered = Table.SelectRows(Source, each [Year] = "2024"),
// 转换金额为数值
TypeChanged = Table.TransformColumnTypes(Filtered, {{"Amount", type number}}),
// 添加利润率列
Added = Table.AddColumn(TypeChanged, "ProfitRate",
each [Profit] / [Revenue], type number)
in
Added

DAX(Data Analysis Expressions)

DAX 是 Power BI 的公式语言,用于创建度量值和计算列

DAX 常用度量值
// 总收入
Total Revenue = SUM(Sales[Revenue])

// 去年同期收入
Revenue LY = CALCULATE(
SUM(Sales[Revenue]),
SAMEPERIODLASTYEAR('Date'[Date])
)

// 同比增长率
YoY Growth =
DIVIDE(
[Total Revenue] - [Revenue LY],
[Revenue LY],
0 -- 被除数为0时返回0
)

// 累计收入(年初至今)
Revenue YTD = TOTALYTD(SUM(Sales[Revenue]), 'Date'[Date])

// 移动平均(7天)
Revenue MA7 = AVERAGEX(
DATESINPERIOD('Date'[Date], MAX('Date'[Date]), -7, DAY),
[Total Revenue]
)

DAX 核心函数分类

类别函数用途
筛选CALCULATE, FILTER, ALL修改计算上下文
时间SAMEPERIODLASTYEAR, TOTALYTD, DATEADD同比、YTD
迭代SUMX, AVERAGEX, RANKX逐行计算再聚合
关系RELATED, RELATEDTABLE跨表引用
逻辑IF, SWITCH, DIVIDE条件判断
CALCULATE 是 DAX 的核心

CALCULATE(表达式, 筛选条件1, 筛选条件2...) —— 在修改后的上下文中计算表达式。几乎所有复杂 DAX 都要用到 CALCULATE。

数据模型

Power BI 推荐使用星型模型

原则说明
事实表 → 维度表(一对多)关系方向从多到一
避免双向筛选容易产生歧义和性能问题
使用日期表时间智能函数必须有完整日期表
隐藏外键列用户应通过维度表筛选

常见面试问题

Q1: DAX 中 CALCULATE 是什么?

答案

  • CALCULATE 是 DAX 中最重要的函数
  • 作用:在修改后的筛选上下文中计算表达式
  • 例如:计算"华东地区的收入"时,CALCULATE(SUM(Sales[Revenue]), Region[Area]="华东")
  • 核心理解:DAX 的每个计算都有一个"上下文",CALCULATE 允许你修改这个上下文

Q2: 计算列和度量值有什么区别?

答案

维度计算列度量值
计算时机数据刷新时查询时(动态)
存储占用内存不占用
粒度行级别聚合级别
用途分组/筛选KPI 值
推荐少用多用

Q3: Power BI 和 Tableau 怎么选?

答案

  • 选 Power BI:已用 Office/Azure 生态、预算有限、需要 DAX 建模
  • 选 Tableau:需要最强交互分析、数据量大、Mac 用户
  • 核心区别:Power BI 强在数据建模(DAX),Tableau 强在视觉探索

相关链接