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 强在视觉探索