SAMEPERIODLASTYEAR()
是 Power BI 中 时间智能函数 里的"老大哥",用来计算 去年同一时间段的值,常用于同比分析(Year-Over-Year / YoY)。
✅ SAMEPERIODLASTYEAR
的全称解释:
Same Period Last Year
🌍 中文翻译:
去年同期
(也可以翻译为"去年相同时间段")
🔍 拆解理解:
部分 | 含义 | 中文意思 |
---|---|---|
SAME |
相同 | 一样的 |
PERIOD |
时间段 | 一段时间 |
LAST YEAR |
去年 | 上一年 |
所以 SAMEPERIODLASTYEAR(Date[Date])
就是:
👉 基于当前筛选的日期范围,找出去年相同的时间段
🎯 应用场景举例:
- 今天是 2025/04/03,使用
SAMEPERIODLASTYEAR(Date[Date])
,就会返回 2024/04/03。 - 如果你筛选的是 2025 年 1 月到 3 月,它会返回 2024 年 1 月到 3 月的数据。
✅ 一句话解释:
SAMEPERIODLASTYEAR()
会返回 当前日期范围的"去年同一时间段" ,通常配合CALCULATE()
使用。
🧠 函数语法:
DAX
SAMEPERIODLASTYEAR(<dates>)
dates
:通常是日期列(比如Date[Date]
)
🎯 常见使用场景:去年销售额、利润等对比
📌 示例 1:计算去年销售额
假设你有一个 Sales[Amount]
销售额字段,还有一个 Date
日期表。
DAX
销售额_去年 =
CALCULATE(
SUM(Sales[Amount]),
SAMEPERIODLASTYEAR(Date[Date])
)
➤ 它的逻辑是:
在当前筛选的时间范围内,去找"去年同一时间段",然后计算那段时间的销售额。
📊 示例 2:同比增长率(YoY %)
DAX
销售额_YoY百分比 =
DIVIDE(
[销售额] - [销售额_去年],
[销售额_去年]
)
前提是你已经创建了
[销售额]
和[销售额_去年]
两个度量值
✅ 使用条件说明
要点 | 是否必须 |
---|---|
有独立的日期表(Date Table) | ✅ 必须 |
日期表和事实表建立好关系 | ✅ 必须 |
使用连续日期(日维度) | ✅ 推荐 |
⚠️ 注意:如果你的日期表不是连续的,比如只有月或年,可能会出错或不返回正确值!
🔄 对比其他时间函数
函数名 | 说明 |
---|---|
SAMEPERIODLASTYEAR() |
当前时间范围的"去年" |
PARALLELPERIOD(...,-1,YEAR) |
返回同样长度的去年区间 |
DATEADD(...,-1,YEAR) |
往前移一年,可以更灵活 |
PREVIOUSYEAR() |
整个上一年的全部时间 |
🧠 什么时候该用 SAMEPERIODLASTYEAR
?
场景 | 推荐 |
---|---|
做折线图、柱状图,显示"今年 vs 去年销售趋势" | ✅ |
对比本月 vs 去年同月的利润、订单等 | ✅ |
自定义月份或季度对比(但时间跨度不能变) | ✅ |
日期表不是连续日(如只有月份或年) | ❌ 不推荐,容易出错 |
🧪 如果你没有日期表怎么办?
强烈建议用以下语句创建:
DAX
Date = CALENDAR(DATE(2019,1,1), DATE(2025,12,31))
然后加上:
DAX
Year = YEAR(Date[Date])
Month = FORMAT(Date[Date], "MMM")
并将你的销售表中的日期字段 Sales[OrderDate]
和 Date[Date]
建立关系。
✅ 总结口诀:
🔹
SAMEPERIODLASTYEAR = 当前时间段 ➜ 去年对应时间段
🔹 常配合
CALCULATE()
使用🔹 做同比必备工具,离不开"日期表"!