如果你还在用VLOOKUP做时间序列分析,那就像是用算盘算微积分——能算,但何必呢?DAX是Excel里的时光机,让时间计算变得简单。而且,农业企业的时间观念就是不一样——他们的财年可能从6月开始,DAX照样能搞定。
一、DAX是什么?为什么比普通Excel函数强大?
1.1 DAX与普通函数的本质区别
普通Excel函数(如SUM、AVERAGE)是基于单元格的。你告诉它"算A1到A100的和",它就乖乖去算。
DAX是基于上下文的。你告诉它"算今年的销售额",它会自己判断:
- 当前行是哪一年?
- 有没有被筛选器过滤?
- 要不要考虑整行上下文?
这就像普通函数是"按图索骥",DAX是"理解意图"。
1.2 两种上下文:行上下文 vs 筛选上下文
行上下文(Row Context):
想象你在Excel表格中一行一行地看数据。当前这一行的数据,就是"行上下文"。
DAX的迭代函数(如SUMX、AVERAGEX)会在每一行创建行上下文。
筛选上下文(Filter Context):
想象你给数据加了筛选器,只显示2024年的数据。这个"只显示2024年"的条件,就是筛选上下文。
数据透视表的行标签、列标签、切片器,都会创建筛选上下文。
一句话总结:
行上下文决定"算哪一行",筛选上下文决定"算哪些行"。
1.3 为什么投资分析需要DAX?
投资分析中,时间计算是核心:
- 今年收益 vs 去年收益(同比)
- 本月收益 vs 上月收益(环比)
- 年初至今累计收益(YTD)
- 滚动12个月收益
用普通Excel函数做这些,公式会复杂到让你怀疑人生。用DAX,就是几个函数的事。
二、时间智能函数核心:让时间计算变简单
2.1 SAMEPERIODLASTYEAR:同比计算的利器
功能:返回去年同期的时间段
语法:
SAMEPERIODLASTYEAR(日期列)实战案例:计算同比增长率
假设你有一个销售表,包含日期和销售额:
// 今年销售额 今年销售额 = SUM(销售表[销售额]) // 去年同期销售额 去年销售额 = CALCULATE( SUM(销售表[销售额]), SAMEPERIODLASTYEAR(销售表[日期]) ) // 同比增长率 同比增长率 = DIVIDE( [今年销售额] - [去年销售额], [去年销售额], 0 )效果