沒有最強(qiáng),只有更強(qiáng)窟社。自定義連接器打造專屬數(shù)據(jù)源麦到。
今天來劑猛藥,明顯標(biāo)題黨又吹顛覆疑故;但真的等了好久好久,全部高能弯菊,非入門纵势,感謝學(xué)Power Query,還來得及管钳,不知道怎么學(xué)習(xí)钦铁,推薦你教程。
微軟截止目前發(fā)過兩部關(guān)于Power Query底層編程語言(M語言)的官方文檔:
1才漆、《M語言規(guī)范》牛曹,本質(zhì)在講語法(類似于英語語法,怎么造句)醇滥;
2黎比、《M標(biāo)準(zhǔn)庫函數(shù)》,本質(zhì)在講單詞(類似于英語單詞鸳玩,死記硬背吧)阅虫。
關(guān)于M語言的單詞(函數(shù)),截止目前一共有680個左右不跟,參考文章:
有些高手已經(jīng)自己學(xué)完了單詞颓帝,也學(xué)了語法,現(xiàn)在問題來了窝革,在語法里有提到過section购城,但在Power Query的編輯器里卻用不起來,為什么虐译?
因?yàn)檎嬲恼Z言級編程支持在后面等著呢瘪板。今天文章將開啟使用section的里程碑分界線。這個如果不好理解漆诽,先看另一個事侮攀。
Power BI目前已經(jīng)開始支持自定義數(shù)據(jù)連接器史侣,這意味著我們可以封裝自己的數(shù)據(jù)源。
封裝一個日期表
封裝 是可復(fù)用哲學(xué)中最強(qiáng)大的思維模式(沒有之一)魏身,先來看看效果惊橱,我們通常需要一個日期表,可以是這樣:
WOW箭昵!在獲取數(shù)據(jù)里直接是【日期表】税朴,這并不是Power BI內(nèi)置的數(shù)據(jù)源,但現(xiàn)在可以自行創(chuàng)建數(shù)據(jù)源家制。
接著會看到:
這里是Excel120創(chuàng)建了用于【日期表】連接器的服務(wù)正林,所以會提醒一下,這不是微軟官方的連接器颤殴,是不是要繼續(xù)觅廓。繼續(xù)下一步:
日期表直接被返回啦!什么情況涵但,這意味著針對日期表的構(gòu)造過程早已完成杈绸,直接被完整封裝起來。
點(diǎn)擊【編輯】去一看究竟吧矮瘟。不可思議的函數(shù)出現(xiàn)了:
學(xué)過PQ函數(shù)的同學(xué)都知道瞳脓,在PQ中只能是系統(tǒng)函數(shù)類加點(diǎn),如:Date.Year( ... )
澈侠,自己定義的函數(shù)是不能帶點(diǎn)的劫侧,而這里居然用Excel120做了函數(shù)的引導(dǎo)類。
我們直接看看Excel120.Calendar會發(fā)生什么:
以及:
發(fā)現(xiàn)端倪了嗎哨啃?這里直接給出了函數(shù)的完整說明及文檔烧栋。
而且這個Excel120.Calendar函數(shù)支持任意參數(shù)排列如:
- Excel120.Calendar() 返回當(dāng)年日期表
- Excel120.Calendar( year ) 返回所在年份的日期表
- Excel120.Calendar( year1 , year2 )返回兩年間的日期表
這個構(gòu)建日期表的函數(shù)也就滿足了我們的任意要求。這被稱為【OCP原則】(后續(xù)發(fā)文詳解【可復(fù)用的結(jié)構(gòu)設(shè)計技術(shù)】)
至此拳球,該日期表就完整的構(gòu)建完畢审姓。
作為本文福利,提供該靈活的日期表給到各位醇坝。當(dāng)你需要日期表的時候只要點(diǎn)擊一下即可隨時待命生成邑跪。
自定義數(shù)據(jù)連接器的配置
如果你能拿到自定義數(shù)據(jù)連接器,那配置一下就一勞永逸地使用呼猪。
首先,這是Power BI Desktop中2017年7月更新后的新功能砸琅,在預(yù)覽中宋距,我們需要打開預(yù)覽,如下所示:
如果感興趣症脂,可以點(diǎn)擊【了解詳細(xì)信息】在微軟官方進(jìn)一步了解其背后原理谚赎。
我們跟隨該項目的開發(fā)負(fù)責(zé)人一起了解下自定義數(shù)據(jù)連接器到底能干嘛淫僻。
數(shù)據(jù)連接器+想象力=新生產(chǎn)力
想象一下,數(shù)據(jù)連接器可以把所有的數(shù)據(jù)查詢都打包封裝壶唤,這樣就不用每次都重新寫M代碼雳灵。它現(xiàn)在及不久的未來更能實(shí)現(xiàn)更多想象空間:
1、針對REST API封裝出商業(yè)分析包
2闸盔、整合各種Power Query已經(jīng)支持的數(shù)據(jù)源
3悯辙、對于SaaS服務(wù)實(shí)現(xiàn)流暢的OAuth驗(yàn)證過程
4、提供加工封裝過的數(shù)據(jù)源確保隱私及安全
5迎吵、為將來和Power BI Content Pack打配合支持不同的授權(quán)模型
6躲撰、直接在ODBC級別封裝Direct Query特性
目前數(shù)據(jù)連接器僅僅在Power BI Desktop中可用,而且存在一些問題和很明顯需要改進(jìn)的地方击费。
舉例說明自定義連接器的配置
首先拢蛋,開啟PBID預(yù)覽功能。
配置過程如下:
1蔫巩、先加BI佐羅好友谆棱,私信獲取該文件:【Calendar.mez】。數(shù)據(jù)連接器文件是一個以.mez結(jié)尾的被編譯過的二進(jìn)制文件圆仔。這個二進(jìn)制文件里面封裝了M代碼础锐。
2、在【我的電腦】系統(tǒng)目錄【我的文檔】下建立目錄:Microsoft Power BI Desktop\Custom Connectors\荧缘,如下所示:
并把該文件放這里即可皆警。
3、重啟Power BI Desktop截粗,它會自動檢索這個目錄下的.mez文件信姓,并嘗試加載,如果該文件編譯正確绸罗,則可正常加載意推,如果編譯有問題則解析不出來,無法加載珊蟀,當(dāng)然這里的案例文件【Calendar.mez】應(yīng)該是沒有問題的菊值。
加載完成,那就把它當(dāng)成數(shù)據(jù)源來用吧育灸。
如何制作自定義數(shù)據(jù)連接器
目前微軟相關(guān)項目組在github.com中放出了教程腻窒,有興趣的可以參考操作,相關(guān)資料在:https://github.com/Microsoft/DataConnectors磅崭。
這里簡單說明一下整個過程:
首選儿子,必須安裝Visual Studio作為開放平臺工具(自行搜索下載)。相當(dāng)大砸喻,安裝在系統(tǒng)盤需要大概17G空間柔逼。
其次蒋譬,按照微軟說明的順序來安裝相關(guān)組件及簡單配置,前文已包含該過程的部分描述愉适,如下:
這里需要給VS安裝Power Query SDK犯助,這樣就可以在VS里面寫M代碼并編譯成.mez文件了。
配置完成好维咸,可以參考文章:
https://github.com/Microsoft/DataConnectors/blob/master/docs/m-extensions.md
繼續(xù)進(jìn)行剂买。
整個流程是:
因?yàn)橛辛薖ower Query SDK,就可以在VS中建立一個Power Query項目:
創(chuàng)建完成后腰湾,可以看到:
這就是可以寫M代碼的地方了雷恃。
我們在【xxx.pq】文件中寫代碼。
我們在【xxx.query.pq】文件中寫測試的查詢费坊,可以測試【xxx.pq】中編寫的代碼是否正確倒槐。
當(dāng)然,默認(rèn)的案例是可以運(yùn)行的附井,只需要按【F5】編譯執(zhí)行即可讨越。然后馬上會碰到第一個錯誤,如下所示:
這個錯誤的問題在于安全性級別的配置永毅,做一個調(diào)整把跨,如下所示:
重新按【F5】編譯執(zhí)行,即可得到正確結(jié)果:
剩下的工作就是去發(fā)揮想象力的時候了沼死。
你可以封裝你喜歡的任何M代碼進(jìn)來着逐。
M語言智能感知
Power Query一直沒有的遺憾是智能感知,終于有個地方可以好好寫代碼了意蛀,還是微軟的VS里最先集成了M代碼的語法感知耸别。
體驗(yàn)如下:
這里終于看到了三大重點(diǎn):
1、section出現(xiàn)县钥,函數(shù)的集合出現(xiàn)了秀姐,可以用【點(diǎn)】了
2、M代碼終于被格式化好了
3若贮、智能感知來了
這便完整地從語言級別支持了M語言省有。關(guān)于Power Query以及M語言的詳細(xì)論述已經(jīng)超過本文范圍。
正文完谴麦。
M語言是一門函數(shù)式泛型語言蠢沿,其思維模式和C語言、VBA细移、JAVA是完全不同的搏予,和javascript都是有些接近,所以用一般的學(xué)習(xí)方法及理解方法會繞很大的彎子弧轧。
而對于非技術(shù)的業(yè)務(wù)及分析人員是可以直接體驗(yàn)到Power Query在拖拽生成時帶來的便利的雪侥,但我們說一門語言底層基因必須好,向上能讓小白用戶快速操作精绎,向下能讓技術(shù)人員深度使用速缨,運(yùn)行能帶來強(qiáng)勁的性能效率,Power Query(M語言)還有很多改進(jìn)空間和想象空間代乃,與其看他成長旬牲,不如陪他成長。
延伸閱讀:
什么是Power Query搁吓?
什么是Power BI原茅?
什么是Power Pivot?
本文福利:
1堕仔、Excel120定制日期表連接器
2擂橘、Power Query官方白皮書(兩部)
3、Power Query國際頂級教程(兩部)
領(lǐng)取福利方法:
1摩骨、分享出去通贞!
插播廣告:Excel120是不同于市面你看到的Excel教程的,正如你所見恼五。與其看其成長昌罩,不如一起成長。公眾號后臺回復(fù)【真愛】領(lǐng)取專屬真愛卡灾馒,然后分享給好友茎用,你的每次分享都會留下積累,直到一天你會得到【專屬福利】(非賣品)睬罗。
2轨功、私信領(lǐng)取你想要的資料吧。
Power BI的學(xué)習(xí)從現(xiàn)在開始傅物,從Excel到商務(wù)智能夯辖,不能再等了。