DAX语言入门——DAX时间智能函数在投资分析中的应用优势

📅 2026/7/12 17:08:04 👁️ 阅读次数 📝 编程学习
DAX语言入门——DAX时间智能函数在投资分析中的应用优势

如果你还在用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 )

效果