最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Power BI之DAX神功:第2卷第14回 半累加計算就是日期維度最大日期對應(yīng)的值

2021-11-01 12:03 作者:孫興華zz  | 我要投稿

一、理解半累加計算

表名:Sheet1

假設(shè):我是賣西瓜的,每天都有進貨和銷售,每天也會剩下一些瓜。

Sheet1這張表是我以每月第1天與最后一天為例,中間日期省略

1月份我剩余西瓜的數(shù)量,應(yīng)該是2

第1季度剩余瓜的數(shù)量,應(yīng)該是6

總之,日期維度中最后一天的庫存就是我的結(jié)余庫存。

神仙們給它起了一個名字:半累加計算

從來就沒有什么救世主,也不靠神仙皇帝!

要創(chuàng)造人類的幸福,全靠我們自己!

來源于《國際歌》

我們將Sheet1的字段放到矩陣上:

這樣做結(jié)果全是錯的,它是將日期維度的值求和了,如果是計算銷售數(shù)量或金額那是正確的

現(xiàn)在我們只需要每個維度最后一個日期的值。

二、LastDate函數(shù)

返回日期列的最大日期(只有一行一列的表)

這里的日期,也可以是另一個時間智能函數(shù)生成的只有日期列的表。

詳見《DAX神功》答網(wǎng)友問08 嵌套使用時間智能函數(shù)?

【新建表】表 = LASTDATE('Sheet1'[日期])

【度量值】總庫存 = sum(Sheet1[庫存])

【度量值】最后一天的庫存 = CALCULATE([總庫存],LASTDATE('Sheet1'[日期]))

正常人其實都是這樣寫的,什么情況下是不正常呢?

例如:起床不洗漱,做飯不洗菜,吃飯不洗手.....

現(xiàn)實中,很多做數(shù)據(jù)分析的人有類似上述行為,但他并不是高手,他處處遇坑,爬起來繼續(xù)摔。他們信仰:“酒肉穿腸過 ,佛祖心中留, 世人若學我,如同進魔道。” 出自《濟公李修緣》

電視劇中的濟公也不洗手,但他不會得病,你學他,你可能會住院。世人對濟公的話只聽前半句,不聽后半句。所以他們研究復(fù)雜的DAX原理,而不進行數(shù)據(jù)清洗。

三、世人若學他,原理走一波

我們將Sheet1表2021/1/31的庫存清空,現(xiàn)實中這一天我忘記盤點了,那么他應(yīng)該取2021/1/31最近的一個日期,在我們表上是2021/1/1的庫存值。

表名:Sheet2

遇到這張表的情況,有1月份的最大日期,但是最大日期對應(yīng)的值為空。

【度量值】總庫存 = sum(Sheet2[庫存])

【度量值】最后一天的庫存 = CALCULATE([總庫存],LASTDATE('Sheet2'[日期]))

結(jié)果就變成了下面這樣:

如果你將表導(dǎo)入PowerBI時先到PowerQuery中數(shù)據(jù)清洗過濾掉庫存為空的行,就沒有下面的問題了。

如果你沒有洗菜,你炒菜時,發(fā)現(xiàn)菜里面有一個蝸牛或者有一只蚯蚓。

解決辦法是什么:把它們撿出來扔掉。否則就是洗菜。

你不洗,你研究原理,那么我們就講講把蝸牛和蚯蚓扔掉的方法。

Ps: 方法并不唯一!

【新建表】表 = FILTER('Sheet2','Sheet2'[庫存]<>BLANK())

建立虛線關(guān)系

詳見《DAX神功第1卷第21回》Calculate調(diào)節(jié)器USERELATIONSHIP函數(shù)

【度量值】非空最后一天庫存 = CALCULATE([總庫存],LASTDATE('表'[日期]),USERELATIONSHIP('Sheet2'[日期],'表'[日期]))

友情提示:其實真的沒有這么麻煩,因為你們還沒有學習數(shù)據(jù)沿襲,《DAX神功》第2卷第22回學完以后,你就可以使用數(shù)據(jù)沿襲的方法來解決這個問題

四、當你使用日期表時,會有另一種情況

我將2021/1/31日刪除,得到下面這張表:2021/1/1我盤點時發(fā)現(xiàn)了還有1個西瓜,后來我又發(fā)現(xiàn)被劉華強劈了一個瓜,瓜還在,明天打上保鮮膜接著賣成西瓜切:)所以2021/1/1西瓜共2個庫存

表名:Sheet1

第一步:創(chuàng)建日期表

日期表 = ADDCOLUMNS(

CALENDAR(FIRSTDATE('Sheet1'[日期]),LASTDATE('Sheet1'[日期])),

"年", YEAR ( [Date] ),

"季度", ROUNDUP(MONTH([Date])/3,0),

"月", MONTH([Date]),

"周", weeknum([Date]),

"年季度", year([date]) & "Q" & ROUNDUP(MONTH([Date])/3,0),

"年月", year([Date]) * 100 + MONTH([Date]),

"年周", year([Date]) * 100 + weeknum([Date]),

"星期幾", WEEKDAY([Date])

)

大家應(yīng)該知道,日期表產(chǎn)生的是2021/1/1~2021/10/31連續(xù)日期的數(shù)據(jù)

第二步:建立關(guān)系

第三步:寫度量值

【度量值】總庫存 = sum(Sheet1[庫存])

【度量值】最后一天的庫存 = CALCULATE([總庫存],LASTDATE('日期表'[Date]))

出現(xiàn)這個問題的原因:日期表中1月的最大日期是2021/1/31,因為我們使用的LASTDATE('日期表'[Date])。但是2021/1/31并沒有庫存,所以這里顯示為空。

解決方案:

===《The Definitive Guide to DAX》中建議寫法===

【度量值】書中方案 = CALCULATE([總庫存],LASTNONBLANK('日期表'[Date],COUNTROWS(RELATEDTABLE(Sheet1))))

原理:LASTNONBLANK掃描第1參數(shù)那個表的日期列,并返回第2參數(shù)不為空時所對應(yīng)表的最后一個值。

===我的方案===

【度量值】我的方案 = CALCULATE([總庫存],LASTDATE('Sheet1'[日期]))

原理:找到Sheet1表日期列的日期維度最大值

五、換成多商品的表格

表名:Sheet1

我們?nèi)匀皇褂脛偛诺亩攘恐?/p>

所以,《The Definitive Guide to DAX》關(guān)于本節(jié)最后兩個度量值,我是用不到的,您可以做為學習研究,我可以用上述方式實現(xiàn),就沒必要使用復(fù)雜方式處理了。

《孫興華講PowerBI火力全開》PowerBI必學課程

https://www.bilibili.com/video/BV1qa4y1H7wp

《DAX神功》文字版合集:

https://www.bilibili.com/read/readlist/rl442274

《DAX神功》視頻版合集:

https://www.bilibili.com/video/BV1YE411E7p3

PowerBI(DAX函數(shù))、PowerQuery(M函數(shù))、Python辦公自動化、Python爬蟲、Python數(shù)據(jù)分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等

https://www.bilibili.com/read/cv10222110?

Power BI之DAX神功:第2卷第14回 半累加計算就是日期維度最大日期對應(yīng)的值的評論 (共 條)

分享到微博請遵守國家法律
德昌县| 襄樊市| 文山县| 通辽市| 漳浦县| 安塞县| 衢州市| 扶余县| 伊川县| 宁阳县| 察隅县| 大兴区| 双峰县| 涟源市| 昌吉市| 青海省| 遂昌县| 历史| 奉化市| 综艺| 奈曼旗| 新巴尔虎左旗| 平邑县| 赞皇县| 拜城县| 东山县| 临夏县| 郓城县| 策勒县| 铁力市| 宣汉县| 无极县| 荃湾区| 巴林右旗| 凌源市| 吉隆县| 永昌县| 冀州市| 文昌市| 祥云县| 安丘市|