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

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

Power BI之DAX神功:第3卷第11回 創(chuàng)建計(jì)算表的四個(gè)常用函數(shù)

2021-12-07 12:33 作者:孫興華zz  | 我要投稿

一、SELECTCOLUMNS函數(shù)

《火力全開(kāi)》筆記26 我們已經(jīng)對(duì)這個(gè)函數(shù)的語(yǔ)法講解過(guò)了,語(yǔ)法不再重復(fù),現(xiàn)在我們講原理

【1】SELECTCOLUMNS與SQL語(yǔ)句中的SELECT...From

《火力全開(kāi)》視頻第0集建議大家先學(xué)習(xí)Access基礎(chǔ)篇,我的Access基礎(chǔ)篇與PowerBI銜接。讓你快速理解什么是數(shù)據(jù)庫(kù)(包含數(shù)據(jù)規(guī)范),多表關(guān)系如何處理等知識(shí)。

假設(shè)我們數(shù)據(jù)庫(kù)中有這樣一張表:

我們想增加一個(gè)總分列,如果直接在表中增加,就相當(dāng)于DAX里面的AddColumns

但是,如果這張表不想讓它發(fā)生改變,想生成一張新的表,實(shí)現(xiàn)增加列就可以使用SELECTCOLUMNS

現(xiàn)在是不是能更好的理解上面這段話(huà)了?當(dāng)我們?cè)跀?shù)據(jù)庫(kù)的表中選擇某列并生成新列,如下圖所示:

結(jié)果如下:現(xiàn)在你看到的結(jié)果和原表有關(guān)系沒(méi)?有關(guān)系!是原表嗎?不是!

其實(shí)將上述過(guò)程寫(xiě)成SQL語(yǔ)句:

SELECT 姓名, [平時(shí)成績(jī)]*0.3+[考試成績(jī)]*0.7 AS 總分 FROM 表1

現(xiàn)在我們將下面這張表放到PowerBI中,使用我們的DAX函數(shù)SELECTCOLUMNS來(lái)演示:

表名:Sheet1

公式如下:

DAX語(yǔ)言相比SQL晚了有20多年。DAX語(yǔ)言基于SQL思維,這一點(diǎn)官方是認(rèn)同的。

【2】SELECTCOLUMNS與SUMMARIZECOLUMNS、SUMMARIZE的區(qū)別

《The Definitive Guide to DAX》中聲明了它們的區(qū)別,我用自己的語(yǔ)言來(lái)講一下:

SELECTCOLUMNS:選擇列,添加新列,生成一張新的表。不分組就相當(dāng)于不去重。

SUMMARIZECOLUMNS、SUMMARIZE:分組!相當(dāng)于SQL中的Group by,分組必去重。

以下圖為例:

表名:Sheet1

同樣的公式:

結(jié)果不去重:

當(dāng)我們使用SUMMARIZECOLUMNS或SUMMARIZE時(shí):

結(jié)果返回:結(jié)果去重,當(dāng)然這里使用sum只出于教學(xué)目的,實(shí)戰(zhàn)中應(yīng)該使用Average

當(dāng)使用Average時(shí):

返回結(jié)果:

還是那句話(huà):沒(méi)有什么時(shí)候應(yīng)該用什么這種說(shuō)法!你的分析中需要用什么你就選擇什么!切記:DAX不能代替人腦,它只是計(jì)算工具。

【3】SELECTCOLUMNS在數(shù)據(jù)沿襲中的應(yīng)用

《The Definitive Guide to DAX》中只提到一種情況,然而情況有很多種,我在《DAX神功》第2卷第21回 數(shù)據(jù)沿襲 中做了充分證明,這里我不在重復(fù)講過(guò)的內(nèi)容。我相信看到這里的小伙伴已經(jīng)看過(guò)數(shù)據(jù)沿襲這節(jié)課了。當(dāng)然你是否還記得那節(jié)課講的是什么,我就不清楚了。

二、創(chuàng)建靜態(tài)單行表ROW函數(shù)【可被表構(gòu)造函數(shù)代替】

《火力全開(kāi)》筆記24.03中我們介紹了ROW函數(shù)的語(yǔ)法

作用:創(chuàng)建只有一行的表(可以是單列或多列)

表名:Sheet1

【度量值】平時(shí)總分 = sum(Sheet1[平時(shí)成績(jī)])?

【度量值】考試總分 = SUM(Sheet1[考試成績(jī)])?

新建表3 = row("平時(shí)分",[平時(shí)總分],"考試分",[考試總分])

注意:新建表中無(wú)論使用度量值還是表達(dá)式,最終返回的均是一個(gè)值。下面的公式用來(lái)證明

新建表4 = row("平時(shí)分",sum(Sheet1[平時(shí)成績(jī)]),"考試分",sum(Sheet1[考試成績(jī)]))

我們可以使用構(gòu)造表函數(shù)代替ROW函數(shù):

新建表5 = {([平時(shí)總分],[考試總分])}

新建表6 = {(sum(Sheet1[平時(shí)成績(jī)]),sum(Sheet1[考試成績(jī)]))}

《The Definitive Guide to DAX》中指出表構(gòu)造函數(shù)的缺點(diǎn)是不能自定義字段名稱(chēng),PowerBI中不存在這樣的問(wèn)題:

《DAX神功》第1卷第3回 我們就講到了這個(gè)方法

返回結(jié)果:

總結(jié):無(wú)論你使用ROW函數(shù)還是表構(gòu)造函數(shù),沒(méi)有什么區(qū)別,開(kāi)心就好!

三、創(chuàng)建靜態(tài)表:DATATABLE函數(shù)【可被表構(gòu)造函數(shù)代替】

【1】標(biāo)準(zhǔn)語(yǔ)法

《火力全開(kāi)》筆記16.2中我們講解了DATATABLE函數(shù)的語(yǔ)法

生成單列的表:

返回結(jié)果:

生成多列的表:

返回結(jié)果:

數(shù)據(jù)類(lèi)型:

【2】不要與表構(gòu)造函數(shù)混淆

{{"數(shù)據(jù)11","數(shù)據(jù)12"},{"數(shù)據(jù)21","數(shù)據(jù)22"}} // 這不是表構(gòu)造函數(shù)

{("數(shù)據(jù)11","數(shù)據(jù)12"),("數(shù)據(jù)21","數(shù)據(jù)22")} // 這才是表構(gòu)造函數(shù)

表構(gòu)造函數(shù)每個(gè)小括號(hào)代表一行,大括號(hào)代表整張表。

【3】DATATABLE函數(shù)只能使用常量,不能使用度量值或表達(dá)式

我們剛剛講ROW函數(shù)可以被表構(gòu)造函數(shù)代替時(shí),向大家演示了,表構(gòu)造函數(shù)支持度量值或表達(dá)式。(其實(shí)度量值也是表達(dá)式生成的)

例如表構(gòu)造函數(shù):

返回結(jié)果:

但是在DATATABLE函數(shù)中就不可以:

返回錯(cuò)誤提示:

注意:DATATABLE 函數(shù)限制表的內(nèi)容必須是常量,不支持任何 DAX 表達(dá)式(度量值)。

【4】為什么說(shuō)它可以被代替我們舉例說(shuō)明

表名:Sheet1

使用Filter反復(fù)篩選同一列:

返回結(jié)果:但是肯定沒(méi)人有會(huì)這樣做。

我們應(yīng)該怎么做?是不是利用表構(gòu)造函數(shù)?

所以說(shuō)表構(gòu)造函數(shù)是最簡(jiǎn)單、最容易理解的。如果我們換成DATATABLE函數(shù)結(jié)果是一樣的。

但你是不是認(rèn)為這畫(huà)蛇添足了?還有更繞你的方法:請(qǐng)往下看

新建表12中我們使用in檢查一個(gè)值是否存在于表中

'Sheet1'[姓名] in {"張三","李四","王五"}

in的等價(jià)函數(shù)是Containsrow

Containsrow(?{"張三","李四","王五"},'Sheet1'[姓名])? // 等價(jià)于'Sheet1'[姓名]?in?{"張三","李四","王五"}

還有另外一個(gè)等價(jià)函數(shù)Contains,《火力全開(kāi)》筆記24.01中講過(guò)

Contains({"張三","李四","王五"},[value],'Sheet1'[姓名])??//?等價(jià)于'Sheet1'[姓名]?in?{"張三","李四","王五"}

以上等價(jià)公式我是使用單列進(jìn)行舉例,如果多列同樣可以使用。

接下來(lái)我們分步驟實(shí)現(xiàn):

表 = DATATABLE ("人名", STRING,{ { "張三" }, { "李四" }, { "王五" } })

我們使用Containsrow或Contains函數(shù)代替in函數(shù):

返回結(jié)果:DAX函數(shù)就是這樣,你想繞,他就陪著你繞。

記?。篋ATATABLE函數(shù)可以被表構(gòu)造函數(shù)代替就可以了。同理Contains和Containsrow大多數(shù)情況下也能被in代替。

四、GENERATESERIES函數(shù)

《DAX神功》第2卷第6回 我們使用GENERATESERIES函數(shù)制作分段排名,例如:每20分一個(gè)檔位。具體案例大家可以詳見(jiàn)這節(jié)課。

另外,我們?cè)?strong>《PowerBI論數(shù)據(jù)清洗重要性》這個(gè)視頻中,也使用了GENERATESERIES函數(shù)做生成笛卡兒積表的“助推火箭”!

https://www.bilibili.com/video/BV13R4y1E774?spm_id_from=333.999.0.0

當(dāng)然,在《The Definitive Guide to DAX》中提到的案例對(duì)部分人員非常有價(jià)值,對(duì)我來(lái)說(shuō)分析就截止到年月日,不涉及小時(shí),分鐘和秒。但是有些行業(yè)可以利用GENERATESERIES函數(shù)生成時(shí)間表。如下圖所示:

這個(gè)時(shí)候,我們就可以使用Selectcolumns選擇生成新列,同時(shí)會(huì)用到Format函數(shù)

《火力全開(kāi)》第18課中有Format函數(shù)詳細(xì)語(yǔ)法,你不需要背下來(lái),用的時(shí)候去查

// Ps: @到底不哈,我使用的是《火力全開(kāi)》筆記18附1日期格式中的方法,與書(shū)中方法不同。但是SELECTCOLUMNS和GENERATESERIES的語(yǔ)法是微軟開(kāi)發(fā)的,我無(wú)法改變其語(yǔ)法。就好比羅老師講法,他有自己的講法,但是法律條文是什么樣就什么樣,不能改。法律條文就相當(dāng)于這里的語(yǔ)法。

我們之前可以新建日期表,同理我們現(xiàn)在制作的是時(shí)間表,當(dāng)你放在切片器上就可以有更多選擇進(jìn)行篩選。

《孫興華講PowerBI火力全開(kāi)》PowerBI必學(xué)課程

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辦公自動(dòng)化、Python爬蟲(chóng)、Python數(shù)據(jù)分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等

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

Power BI之DAX神功:第3卷第11回 創(chuàng)建計(jì)算表的四個(gè)常用函數(shù)的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
桦甸市| 晋宁县| 常熟市| 河津市| 静安区| 阳信县| 闻喜县| 资阳市| 灵川县| 田阳县| 濉溪县| 肇州县| 南通市| 红河县| 平塘县| 青河县| 黄石市| 乡城县| 安溪县| 纳雍县| 海盐县| 浠水县| 汶上县| 长海县| 鄂伦春自治旗| 阿尔山市| 阳春市| 长治市| 明星| 铁力市| 蛟河市| 西乌珠穆沁旗| 苏尼特右旗| 永城市| 益阳市| 仲巴县| 遂平县| 沭阳县| 禹州市| 壶关县| 务川|