PowerBI之DAX神功番外篇64 為何部分網(wǎng)上找的答案你用不了
網(wǎng)友提問:

放大圖片


回答網(wǎng)友問題:
你現(xiàn)在問GPT都有50%的概率能解決問題,但是國內(nèi)技術(shù)論壇就不好說了
我在學(xué)習(xí)過程中,我發(fā)現(xiàn)一個(gè)問題,國內(nèi)很多DAX文章,有刻意內(nèi)容缺失
一共就不到10句代碼,有些發(fā)布者故意把某些函數(shù)替換了(不是拼寫錯(cuò)了),或者少幾句,
對(duì)于新人來說,肯定就手足無措了。但是他們蒙不了我。關(guān)于這個(gè)問題他們已經(jīng)公開承認(rèn)了

舉個(gè)例子,可口可樂為什么不把它的配方申請(qǐng)專利,而是技術(shù)保護(hù)?他們不怕你賣可樂,怕你們自己會(huì)做可樂,就不再依賴他們了!比如你發(fā)明一個(gè)東西,申請(qǐng)專利,我自己做一個(gè)自己用只要不賣錢,誰都沒辦法。沒有申請(qǐng)專利的東西如果我有本事,通過喝可樂把可樂的配方給猜出來了,那是我的能力,因?yàn)樗鼪]有申請(qǐng)專利。(當(dāng)然我這個(gè)我真喝不出來。。。)
但是,你們做演示,不說代碼,或是故意寫錯(cuò)的代碼,那我有能力看出端倪,畢竟就不到10行的代碼,對(duì)于學(xué)會(huì)的人有什么難度?我把錯(cuò)誤代碼(非拼寫錯(cuò)誤)變成正確代碼,那屬于知識(shí)創(chuàng)新。我是將原本跑不起來的代碼,讓它跑起來了。

比如之前有網(wǎng)友問我從阿斗上看到某個(gè)視頻問我這個(gè)怎么做的?
https://www.bilibili.com/video/BV1o341127GF
人家阿斗原作者沒說我自己能做出來是侵犯他的權(quán)利。
全網(wǎng)學(xué)辦公軟件的女同學(xué)沒有不認(rèn)識(shí)的宇哥,兩次講Access,
我通過技術(shù)實(shí)現(xiàn)了他展示的功能,他也沒說我侵犯他的權(quán)利,還給我點(diǎn)贊
https://www.bilibili.com/video/BV1Pb4y1R7HF
https://www.bilibili.com/video/BV1bV411i7oC
有些知識(shí),即便是某些人寫進(jìn)書里,別人再使用也不構(gòu)成侵權(quán),因?yàn)橹R(shí)產(chǎn)權(quán)不是他的
這些簡(jiǎn)單的語法在微軟的幫助文檔里都有現(xiàn)成的。
這與做軟件不一樣,你們手機(jī)里哪個(gè)APP是10幾行代碼可以搞定的?
而且,你們誰寫一個(gè)同比環(huán)比的公式,能申請(qǐng)專利嗎?代碼是你發(fā)明的還是案例是你發(fā)明的?
有些人口中的著作權(quán),是一種壟斷。人家微軟發(fā)明的計(jì)算機(jī)語言,我們利用小學(xué)生的邏輯思維配合幫助文檔簡(jiǎn)單的使用它。就因?yàn)槟阍?jīng)用過,所以我們就不能用了?
這與文學(xué)、影視、音樂等是有本質(zhì)區(qū)別的。
現(xiàn)在,他們的做法,就好比我們都拍西游記,他對(duì)孫悟空的化裝有著作權(quán),但是對(duì)孫悟空三打白骨精這件事沒有著作權(quán)。
那么多講Excel工作表函數(shù)的人? sum 、average、sumif 。。。。。。大家都講過,語法都一樣,只要案例數(shù)據(jù)不同就可以了,比如我的表格姓名是孫興華,別人的是張三,何談抄襲?要說抄襲都是抄微軟的。
當(dāng)然,這種事情大多發(fā)生在M和DAX上面,其它領(lǐng)域很少。
現(xiàn)在解決問題:
我們先導(dǎo)入兩張表


建立一對(duì)多關(guān)系

為了把這個(gè)過程講清楚,我們一點(diǎn)一點(diǎn)說
表2是一端表,表1是多端表,一端可以篩選多端
在表2中新建列,如下圖,為什么沒有篩選呀?因?yàn)槭切陆?,我們使用聚合函?shù),它是行上下文,所以沒有篩選。

當(dāng)我們給它套上Calculate時(shí)它就能篩選了,因?yàn)樽隽松舷挛霓D(zhuǎn)換

接下來我們需要篩選表1中更新日期等于表2中新建列現(xiàn)在的日期
那表2中新建列的日期不就是表1中更新日期每個(gè)物料號(hào)對(duì)應(yīng)的最大日期嗎?

實(shí)現(xiàn)上述內(nèi)容,因?yàn)榻Y(jié)果最終是一張表,所以我們可以放在新建表中測(cè)試

但是返回結(jié)果,并不理想,那我們思考為什么會(huì)這樣呀?
還記得在講循環(huán)依賴時(shí)我說的隔山打牛嗎?
我們兩張表連線在一起,出現(xiàn)了擴(kuò)展表原理
https://www.bilibili.com/read/cv14332824
我們是不是只需要表1中的物料號(hào)進(jìn)行篩選呀?其它字段的篩選都不需要,所以都刪除

看見這張表,原理也就到此為止了。
我們回到新建列上面來,剛才我們做到了這一步,如下圖

我們又通過新建表展示了原理,現(xiàn)在新建列可以改成

為什么都顯示11呀?剛才講過了,聚合函數(shù)和MAXX等迭代函數(shù)都是創(chuàng)建行上下文的,我們要通過Calculate轉(zhuǎn)換,于是這就搞定了


剛才介紹了新建列的方法,再說說度量值的方法
很簡(jiǎn)單吧,Values是對(duì)指定表指定列去重后的表,calculate(sum(表[列])) 就是我們最常用的度量值,我們使用MAXX 把calculate(sum(表[列]))適配給每個(gè)最大日期,然后放到報(bào)表中,通過表2的物料號(hào)與物料描述篩選這個(gè)值

很多網(wǎng)上講DAX的一直喜歡用上面的方法,我也喜歡,但是。。。你們總跟我提總計(jì)問題,你不想讓它為空,又想要一個(gè)正確的總計(jì),講新建列時(shí)我已經(jīng)講了新建表的方法,用那個(gè)表,配合sumx就可了度量值如下

看完今天的文章,大家就不要再說,為什么你孫興華要先var tb? 然后再對(duì)這個(gè)tb計(jì)算,人家都不是這么計(jì)算的。那你們跟我說總計(jì),你們沒和人家聊總計(jì),我不在意這個(gè)總計(jì),但是你們需要總計(jì):)

PowerBI學(xué)習(xí)順序:
【1】Access基礎(chǔ)篇,學(xué)習(xí)s01開頭的集數(shù),理解表格數(shù)據(jù)規(guī)范和表關(guān)系
https://www.bilibili.com/video/BV1tf4y117Sh
【2】PowerBI火力全開,學(xué)習(xí)函數(shù)語法,與應(yīng)用場(chǎng)景
https://www.bilibili.com/video/BV1qa4y1H7wp
【3】DAX神功,學(xué)習(xí)DAX函數(shù)原理
https://www.bilibili.com/read/readlist/rl442274
【4】PowerBI可視化圖表
https://www.bilibili.com/video/BV1W54y1i7dE
https://www.bilibili.com/video/BV1r54y1i75n