速六財(cái)易
2018 2012
發(fā)布于 2024-04-29 · 圖片1
power query基礎(chǔ) (3.3):深入淺出 Power Query 的 "let…in" 語(yǔ)法:深入ETL流程核心
原創(chuàng) 速六財(cái)易  速六財(cái)易  2024-04-28 11:36 天津 聽(tīng)全文
我們?cè)谑褂肞ower Query時(shí),會(huì)發(fā)現(xiàn)它使用"let…in"的結(jié)構(gòu)塊來(lái)組織代碼,這篇文章我們開(kāi)始深入講解 "let…in" 結(jié)構(gòu),如何高效運(yùn)用它來(lái)操縱和轉(zhuǎn)換數(shù)據(jù),以及如何利用語(yǔ)法嵌套來(lái)構(gòu)建復(fù)雜的數(shù)據(jù)變換邏輯。
"let":定義數(shù)據(jù)轉(zhuǎn)換步驟
"let" 關(guān)鍵字定義的部分是一個(gè)步驟的序列,其中每一行都會(huì)創(chuàng)建一個(gè)新的查詢步驟,Power Query 使用等號(hào)進(jìn)行賦值,左邊是查詢步驟的名字(可以自由命名),右邊是M函數(shù)操作或?qū)ζ渌汛嬖诓樵儗?duì)象的操作,M函數(shù)或者其他查詢對(duì)象通常返回單個(gè)的數(shù)據(jù)對(duì)象,因此每一個(gè)查詢步驟被賦予了某一個(gè)數(shù)據(jù)對(duì)象的值。
因此,這些查詢步驟,實(shí)質(zhì)上是局部變量,可以用來(lái)存儲(chǔ)從源數(shù)據(jù)中提取的結(jié)果、被清洗或轉(zhuǎn)換后的數(shù)據(jù)集合,或是中間計(jì)算結(jié)果。通過(guò)命名這些變量,我們能夠清晰地追蹤每一個(gè)數(shù)據(jù)轉(zhuǎn)換步驟,同時(shí)確保我們的數(shù)據(jù)處理流程具有可讀性和可維護(hù)性。
例如,可以有這樣的 "let..in.." 代碼段:
let
    SourceData = Excel.CurrentWorkbook(){[Name="SalesData"]}[Content],
    CleanedData = Table.SelectRows(SourceData, each [Sales] <> null),
    FormattedData = Table.TransformColumnTypes(CleanedData, {{"Date", type date}})
in
    FormattedData
在上述代碼中,我們看到有三個(gè)定義的數(shù)據(jù)轉(zhuǎn)換步驟,它們分別代表從Excel工作簿加載數(shù)據(jù),清洗空值以及格式化日期列等處理。
"in":輸出最終結(jié)果
“in”關(guān)鍵字指定了我們想要返回的最終數(shù)據(jù)對(duì)象,通常是我們進(jìn)行的數(shù)據(jù)轉(zhuǎn)化之后的結(jié)果,也就是我們想要的數(shù)據(jù)。
在 "let" 之后的所有變換操作中,"in" 作為終結(jié)點(diǎn),標(biāo)志著數(shù)據(jù)準(zhǔn)備好提供給下一階段的處理,可能是加載到Power BI的數(shù)據(jù)模型中,也可能是供其他Power Query查詢引用。
嵌套 "let…in":構(gòu)建高級(jí)數(shù)據(jù)邏輯
進(jìn)階的用法中,“l(fā)et...in” 語(yǔ)法本身允許嵌套使用,這提供了構(gòu)建復(fù)雜數(shù)據(jù)邏輯和自定義函數(shù)的強(qiáng)大能力。嵌套 "let...in" 結(jié)構(gòu)使我們可以在局部范圍內(nèi)創(chuàng)造臨時(shí)的數(shù)據(jù)處理邏輯,而不影響外部環(huán)境。這在創(chuàng)建自定義函數(shù)或需要臨時(shí)變量來(lái)處理復(fù)雜轉(zhuǎn)換時(shí)尤其有用。這一步分比較復(fù)雜,這里僅做介紹,可以不掌握,后面隨著M函數(shù)學(xué)習(xí)的深入,再回過(guò)頭來(lái)掌握.
舉個(gè)例子:
let
    計(jì)算模型 = (input) =>
        let
            Step1 = input * 2,
            Step2 = Step1 + 99
        in
            Step2,
    Result = List.Transform({1, 2, 3}, each 計(jì)算模型(_))
in
    Result
在這個(gè)例子中,我們定義了一個(gè)名為計(jì)算模型的自定義函數(shù),它內(nèi)部使有自己的 "let...in" 結(jié)構(gòu);然后在外部我們可以在同一個(gè)查詢中調(diào)用這個(gè)函數(shù)來(lái)轉(zhuǎn)換列表中的每個(gè)元素。
結(jié)論
"let...in" 是 Power Query M 語(yǔ)言的精髓,是數(shù)據(jù)轉(zhuǎn)換的基礎(chǔ)。無(wú)論是處理簡(jiǎn)單清洗任務(wù)還是設(shè)計(jì)復(fù)雜的數(shù)據(jù)模型,"let...in" 語(yǔ)法都體現(xiàn)出其靈活性和強(qiáng)大的功能。通過(guò)嵌套使用,我們甚至可以創(chuàng)建復(fù)雜的計(jì)算邏輯,使得Power Query成為處理現(xiàn)代商業(yè)數(shù)據(jù)的理想工具。
回應(yīng) 舉報(bào)
贊1
收藏1

推薦閱讀

7歲
想法
Today
Took a walk for 40 mins

1. 5 Raz
2. Retell The Carrot ?? Seed
3. The math exercises

Tomorrow’s plan
1. Learn to use the ruler and check the length of road made of wooden blocks
2. Apple ?? tree, use playdough to retell the story
4歲
9歲
想法
英文學(xué)習(xí)必須要教材?詩(shī)意的描寫(xiě)其實(shí)一首Lullaby里也能學(xué)
————論英語(yǔ)老師媽媽如何筆耕不輟

曾經(jīng)有人大言不慚的說(shuō)“自己該背的單詞都背完了”?? 對(duì)學(xué)習(xí)的理解如此狹隘也是夠了。

說(shuō)說(shuō)我自己的感受:
講課的時(shí)候滿腦子不是考試題目就是文章。其實(shí)我們的思維是非常局限的,可以說(shuō)甚至有點(diǎn)固化的。
所以在給自己的孩子做英語(yǔ)啟蒙的時(shí)候,趕緊買(mǎi)來(lái)正兒八經(jīng)地“實(shí)操指南”(圖1)
(近年來(lái)能找到電子版的都盡量看純?cè)媪?,翻譯的版本多多少少都有各種問(wèn)題)

今天一邊哄睡一邊學(xué)會(huì)了兩首Lul...
5歲
想法
??英語(yǔ)啟蒙
1牛津樹(shù)6本
2英文繪本 6本
3sss磨耳朵

????大語(yǔ)文
1中文繪本 5本
2線上斑馬

????益智玩具/ 手工
1邏輯狗2張
2 never bored 6頁(yè)

????數(shù)學(xué)啟蒙
1迷宮4頁(yè)
2數(shù)學(xué)啟蒙游戲書(shū)4頁(yè)
3七田真 8頁(yè)
5摩比 4頁(yè)

never bored 玩到嗨,拼一拼,剪一剪,貼一貼,涂一涂,數(shù)一數(shù),畫(huà)一畫(huà),每一張都是可以撕下來(lái)的書(shū),寶寶很喜歡。和爸爸合作的貓頭鷹,一個(gè)只動(dòng)手一個(gè)只動(dòng)嘴??...
10歲
想法
時(shí)間的規(guī)劃取決于:幾點(diǎn)鐘回到家?學(xué)校作業(yè)多不多?哪些作業(yè)耗時(shí)比較久?多久能完成,能否通過(guò)一段時(shí)間的嘗試縮短作業(yè)時(shí)間~

我家四年級(jí)娃,每天下午一個(gè)半到2小時(shí)戶外瘋玩,是真的雷打到頭頂了都不一定會(huì)回家。6點(diǎn)回家,洗澡吃飯彈琴。每天規(guī)劃學(xué)習(xí)時(shí)間2小時(shí)(每一項(xiàng)都經(jīng)過(guò)計(jì)時(shí)實(shí)測(cè)的),采用25分鐘學(xué)習(xí)?5分鐘休息遠(yuǎn)眺,保視力,懂的都懂。彈性操作,提前完成當(dāng)天學(xué)習(xí)絕不額外加量,時(shí)間歸她自主安排。如果2小時(shí)完不成,看她自愿,有時(shí)候她愿意死磕到底,如入無(wú)人之境,我也不打擾。通常都是完不成就完不...
3 2 3
7歲
想法
覺(jué)得還是裸聽(tīng)吧,畢竟癡迷動(dòng)畫(huà)的例子不勝枚舉

我們家的娃八個(gè)月左右開(kāi)始看繪本,起初是紙板書(shū),類似小雞球球。使用嘰里呱啦磨耳朵。

一歲半左右開(kāi)始接觸英語(yǔ),會(huì)說(shuō)話之前先會(huì)的英文字母及一些簡(jiǎn)單的色彩、動(dòng)物之類的單詞。后來(lái)開(kāi)始用點(diǎn)讀筆,配合喜馬拉雅磨耳朵。

現(xiàn)在兩歲半,最近一直使用喜馬拉雅的142首慢速英文兒歌磨耳朵,經(jīng)常一邊玩一邊跟著唱。間或使用嘰里呱啦、斑馬、麥田的課程。

GOING TO THE FIREHOUSE 消防隊(duì) Little Critter: Goin...
16歲
想法
淺談八上數(shù)學(xué)和一些計(jì)劃

大概粗略了解了一些,八上可能重點(diǎn)在幾何,要掌握每個(gè)模型,方法,做題的技巧,理解公式的由來(lái),代數(shù)可能考察的是計(jì)算能力,娃經(jīng)??村e(cuò)符號(hào),看漏項(xiàng)。

目前來(lái)說(shuō)一二章節(jié)掌握的還可以,計(jì)算可能得再練練,開(kāi)學(xué)后盡量保持每天預(yù)習(xí)一小節(jié),爭(zhēng)取在九月份把八年級(jí)的數(shù)學(xué)學(xué)精(保證基礎(chǔ)卷滿分,提優(yōu)卷在115上下)
后刷單元,期末,期中卷,分?jǐn)?shù)應(yīng)保持在118左右,每天鞏固錯(cuò)題本,其中每天花半個(gè)小時(shí)學(xué)習(xí)函數(shù),目前基本概念和一些基礎(chǔ)的都差不多了。
[比不上花生里的各位牛娃??]
10歲
想法
reading explorer 本周葡萄開(kāi)始學(xué)F
第一周自學(xué)打卡
A篇聽(tīng)音頻+閱讀+做題大概30分鐘
在小花生參考了花友們自學(xué)RE的各種辦法
謝謝各位大神的攻略
希望娃能一直堅(jiān)持下去
RE真的是非常好的閱讀教材
閱讀配套的題目也比RAZ更深入
加油吧,小小少年

連圖帶文字詳細(xì)記錄一下今天娃講的故事
Mum took Kipper's old shirt out of the drawer. It doesn't fit. Then they all went to the jumble sale.There were too many people,it was too crowded.Mum,look,the clock struck eight.They put the old things into the jumble sa...
5歲
8歲
想法
今日完成情況~

1、蛋糕自然拼讀:第8天,爸爸陪學(xué)的。沒(méi)復(fù)習(xí)....

2、斑馬思維和英語(yǔ)完成。

3、sight word 一張(out)。

4、sight word reader&comprehension (and )

5、久趣英語(yǔ)一節(jié),爸爸陪上課。

6、音頻:早起古詩(shī)音頻30分鐘左右,其他時(shí)間指定要聽(tīng)卡由,大概1小時(shí)?。

以上項(xiàng)目基本都是爸爸去上班前完成的。???♀?
【轉(zhuǎn)載】英語(yǔ)啟蒙是最近幾年流行起來(lái)的,特別是在一二線城市,.最常見(jiàn)的原版英語(yǔ)啟蒙路徑我看過(guò)很多專家與優(yōu)秀家長(zhǎng)成功經(jīng)驗(yàn),雖然針對(duì)不同年齡段有不同的方法但大致可分成“聽(tīng)力先行、繪本引入、拾級(jí)而上、英語(yǔ)自由”這么幾個(gè)環(huán)節(jié)。在現(xiàn)在這個(gè)信息極大豐富的年代,只要稍微下一點(diǎn)工夫研究一下,想找到啟蒙資源并不是難事,真正的問(wèn)題反而在于:資料太多,無(wú)從下手。有人甚至把網(wǎng)盤(pán)塞的滿滿的,英語(yǔ)繪本買(mǎi)了幾柜,幾年過(guò)去了,但依然還沒(méi)摸到門(mén)路,孩子也沒(méi)什么進(jìn)步。
所以任何學(xué)習(xí)需要規(guī)劃,做到:心中有目...