200529 PowerBI 时间智能终极奥义,并用 WTD 练手

我们之前写过很多关于时间智能函数的文章,但文本将是最为本质以及最重要的。

本文不具体讲解任何一个时间智能函数,但通过本文的学习,你将可以驾驭所有时间智能函数,因为您将理解其更加本质的内容,全网首发。

时间智能的逻辑本质

准确讲,时间智能并不是时间智能,应该叫:日期智能。为了精确地描述,下面统称日期智能。

其逻辑本质是一根日期轴,如下:

image

从日期角度分析问题的逻辑本质是:给定一段日期区间,并计算该日期区间下的指标

通常来讲,在计算指标时,都会有一段已有的日期区间作为上下文(筛选环境),但在实际计算中,我们需要对已有的日期区间进行变换。例如:对于任何一个日期点,都可以对它计算 MTD 或 YTD,其逻辑本质是将一个日期点扩展成为一段更长的日期区间。

更准确地来考察一段日期区间,不难看出:

  • 最短的日期区间,是一个点,起点日期 d1 与终点日期 d2 是重合的。
  • 起始点非重合的日期区间是整数点连续的。含义是其连续性体现在整数上,如:1月1日...1月5日是连续的 5 日。

为了驾驭日期维度的计算,我们需要掌握对日期的逻辑变换核心规则:

  • 第一,移动一段日期区间
  • 第二,缩放一段日期区间
  • 第三,移动并缩放一段日期区间的连续变换

下面专门来讨论这三种情况。

移动日期区间

需要移动日期区间的业务场景包括:对一段日期区间移动到其去年同期或上月同期等。

逻辑本质如下:

image

作为 DAX 引擎的设计者应该给业务人员一种便捷的方式,让日期区间可以得到便捷的移动。例如:

KPI.PY = CALCULATE( [KPI] , DATEADD( Dates[Date] , -1 , YEAR ) )

其中,DATEADD 完成了移动日期区间的动作。不管您学习了哪些日期智能函数,应该注意其逻辑本质。

缩放日期区间

需要缩放日期区间的业务场景包括:MTD,QTD,YTD一般是放大;而月初/末,年初/末是缩小等。

逻辑本质如下:

image

作为 DAX 引擎的设计者应该给业务人员一种便捷的方式,让日期区间可以得到便捷的缩放。例如:

KPI.YTD = CALCULATE( [KPI] , DATESYTD( Dates[Date] ) )

其中,DATESYTD 完成了缩放日期区间的动作。不管您学习了哪些日期智能函数,应该注意其逻辑本质。

移动和缩放日期区间

移动和缩放日期区间是结合前两者进行连续性操作,如下:

KPI.YTD.PY = 
CALCULATE( 
    CALCULATE( [KPI] , DATESYTD( Dates[Date] ) ),
    DATEADD( Dates[Date] , -1 , YEAR )
)

到这里,其实就理解了关于日期智能函数的所有逻辑本质。

接下来,我们需要根据实际业务场景来组合这些变换

考一考

下面的题目,如果您可以作对,则表示您对日期智能函数有了熟练的理解。请听题:

【问题一】日期智能函数需要一根日期轴,应该用谁来提供?

  • A 日期表
  • B 任意日期列

【问题二】日期智能函数可以变换日期区间,为了清除外部其他日期区间的影响,需要:

  • A 用 ALL 清除外部筛选
  • B 用 REMOVEFILTERS 清除外部筛选
  • C 不用管

【问题三】如果订单表有订单日期和发货日期,需要按不同日期计算销售额,应该建立几个日期表:

  • A 一个
  • B 两个

【问题四】NEXTDAY 是日期智能函数吗?它返回的是值还是表?

  • A 值
  • B 表

【问题五】某个闰年的2月29日的去年同期(DATEADD(...,-1,YEAR))是哪一天?

  • A 空
  • B 2月28日
  • C 3月1日
  • D 报错

【问题六】某个闰年的2月29日的上月同期(DATEADD(...,-1,MONTH))是哪一天?

  • A 1月29日
  • B 1月28日
  • C 1月31日

【问题七】2020 年 5 月已过 13 日,MTD 的去年同期是哪段日期?

  • A 2019.05.01 到 2019.05.13
  • B 2019.05.01 到 2019.05.31

上面 7 个问题很常见,都是初学者容易提出的问题,你可以通过试验来验证答案。

实践 WTD 计算

在默认的日期智能的计算中,并不包括 WTD 的计算,虽然有很多种实现方法,这里给出最简单的一种,如下:

KPI.WTD = 
CALCULATE( 
    [KPI] , 
    DATESINPERIOD( '日期'[Date] , MAX( '日期'[Date] ) , - WEEKDAY( MAX( '日期'[Date] ) , 2 ) , DAY )
)

周和月,周和年的结构都不同,周是有固定的 7 天的,因此,通过本文的学习,我们可以这样构建逻辑结构如下:

  • 选择日期区间的最后日期作为参考点日期
  • 计算该日期的星期几
  • 缩放该日期到周一

有的伙伴可能会问:MAX( '日期'[Date] ) 用了两次,如果使用 VAR 建立一个变量就可以节省一次计算。从表面上,看上去是这样的,但实际上 DAX 引擎是一个聪明的引擎,即使按照这里的重复两次 MAX 的写法,DAX 引擎也会把它自动优化掉。当然,不同的案例和场景要看具体的 DAX 公式。这里仅仅是作为一个完整的补充。

总结

为了完全驾驭时间智能,本质上,首先学习的不应该是时间智能函数,而是应该理解在分析的时候,分析师需要用逻辑来思考业务问题,而不是陷入一堆 DAX 函数。从学习 DAX 到超越 DAX,达到更加逻辑的状态,再回到 DAX 来进行运用就会有一种豁然开朗的感觉。

任何一份报告的任何一个图表都需要对日期进行控制,对日期进行控制就需要:

  • 设置日期区间
  • 移动,缩放或移动且缩放连续变换一段日期区间
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,230评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,261评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,089评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,542评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,542评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,544评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,922评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,578评论 0 257
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,816评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,576评论 2 320
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,658评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,359评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,937评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,920评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,156评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,859评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,381评论 2 342