跳至正文

【条件聚合】Tableau计算MTD/YTD、同期MTD/YTD

标签:

public 仪表板推荐:

问题

如何创建和显示“年初至今YTD”和“月初至今MTD”计算。

答案

1、最简单的YTD:

假设订单日期都是早于TODAY的,那么YTD可以如下实现:

YTD=
DATEDIFF(“year”,[订单日期], TODAY()) = 0 
// 结果是 TRUE/FALSE的判断

当然,年度相等也可以使用YEAR函数,YEAR([订单日期]) = YEAR( TODAY() ),不过考虑到后期切换QTD/MTD,建议统一用DATEDIFF来写。

注意,这个YTD是结果为TRUE/FALSE的判断,如果要计算YTD sales,那么可以如下实现:

YTD_sales=
SUM( IIF( YTD, [sales],null))

当然,由于这个逻辑比较简单,我个人建议直接合并在一起完成,如下:

YTD_sales= 
SUM( IIF( DATEDIFF(“year”,[订单日期], TODAY()) =0 , [sales],null))

这就是使用最多的YTD的方法,YTD部分只需要一次DATEDIFF计算即可完成。

2、增加条件的YTD

如果TODAY当日改为参数日期,或者对应的日期存在晚于TODAY的数据明细,那么就要增加一个判断:

YTD逻辑如下:

YTD= 
DATEDIFF(“year”,[订单日期], parameter_date ) =0 
AND [订单日期]<= parameter_date
// 结果是 TRUE/FALSE的判断

YTD销售额的逻辑如下,为了方便理解,这里把IIF改为IF- THEN- END:

YTD_sales=  SUM( 
IF  DATEDIFF(“year”,[订单日期], parameter_date ) =0  
    AND [订单日期]<= parameter_date 
THEN [sales]  ENB)

对比:官方提供了如下的YTD选项,在我看来,计算逻辑略微复杂,更多的计算意味着更低的性能。

选项 1 (MTD)创建年初至今和月初至今计算 | Tableau Software选项 2 (MTD)

  • 选择“分析”>“创建计算字段”
  • 将字段命名为“YTD Sales”(YTD 销售额),输入以下计算,然后单击“确定”:
[Order Date] <= TODAY() AND
DATETRUNC( "year", [Order Date]) = DATETRUNC("year", TODAY() )
  • 将“YTD”拖到筛选器功能区上,并选择“True”

选项 2 (MTD)

  1. 选择“分析”>“创建计算字段”
  2. 将字段命名为“MTD Sales”(MTD 销售额),输入以下计算,然后单击“确定”: [Order Date] <= TODAY() AND DATETRUNC( “month”, [Order Date]) = DATETRUNC(“month”, TODAY() )
  3. 将“MTD”拖到筛选器功能区上,并选择“True”

3、去年同期YTD

去年同期YTD需要满足两个条件,日期和today的年度间隔是1年,同时早于today对应的去年同期日。

去年同期YTD= 
DATEDIFF(“year”,[订单日期], TODAY()) =1 
AND [订单日期], TODAY()-365

注意,这里的结果依然是TRU E/FALSE,另外,datediff计算间隔,去年在today之前,间隔一年;today的去年同期,不需要DATEADD函数,直接 TODAY()-365 即可。

考虑到闰年是四年一见的极端情况,不需要考虑366天的特殊值。

在分析中,常常用PY代表去年。因此很多仪表板中就如下展示:

来自tableau public,点击可跳转:Call centre scorecard #VOTD by Ellen Blackburn

4、去年同期MTD

去年同期MTD和YTD类似,同期月份间隔12个月,如下:

去年同期MTD= 
DATEDIFF(“month”,[订单日期], TODAY()) =12
AND [订单日期] <= TODAY()-365
去年同期MTD= 
DATEDIFF(“month”,[订单日期], TODAY()) =12
AND [订单日期] <= TODAY()-365

这样的逻辑,是我目前想到的极简语法。如果有更好的方案,欢迎留言。

@喜乐君

Jan 31, 2023

《【条件聚合】Tableau计算MTD/YTD、同期MTD/YTD》有2个想法

  1. Pingback: 【BI比较】DAX时间智能函数,与SQL/Tableau对比 - 喜乐君

  2. Pingback: 大数据太慢?Tableau Server优化性能方法一览 – 喜乐君

评论已关闭。