再度顛覆:Power BI支持自定義數(shù)據(jù)連接器

沒有最強(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)一步了解其背后原理谚赎。

鏈接為:https://github.com/Microsoft/DataConnectors

我們跟隨該項目的開發(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ù)智能夯辖,不能再等了。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末董饰,一起剝皮案震驚了整個濱河市蒿褂,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌卒暂,老刑警劉巖啄栓,帶你破解...
    沈念sama閱讀 216,324評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異也祠,居然都是意外死亡昙楚,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,356評論 3 392
  • 文/潘曉璐 我一進(jìn)店門诈嘿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來堪旧,“玉大人削葱,你說我怎么就攤上這事〈久危” “怎么了析砸?”我有些...
    開封第一講書人閱讀 162,328評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長爆袍。 經(jīng)常有香客問我首繁,道長,這世上最難降的妖魔是什么陨囊? 我笑而不...
    開封第一講書人閱讀 58,147評論 1 292
  • 正文 為了忘掉前任弦疮,我火速辦了婚禮,結(jié)果婚禮上蜘醋,老公的妹妹穿的比我還像新娘胁塞。我一直安慰自己,他們只是感情好堂湖,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,160評論 6 388
  • 文/花漫 我一把揭開白布闲先。 她就那樣靜靜地躺著,像睡著了一般无蜂。 火紅的嫁衣襯著肌膚如雪伺糠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,115評論 1 296
  • 那天斥季,我揣著相機(jī)與錄音训桶,去河邊找鬼。 笑死酣倾,一個胖子當(dāng)著我的面吹牛舵揭,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播躁锡,決...
    沈念sama閱讀 40,025評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼午绳,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了映之?” 一聲冷哼從身側(cè)響起拦焚,我...
    開封第一講書人閱讀 38,867評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎杠输,沒想到半個月后赎败,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,307評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡蠢甲,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,528評論 2 332
  • 正文 我和宋清朗相戀三年僵刮,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,688評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡搞糕,死狀恐怖勇吊,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情寞宫,我是刑警寧澤萧福,帶...
    沈念sama閱讀 35,409評論 5 343
  • 正文 年R本政府宣布拉鹃,位于F島的核電站辈赋,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏膏燕。R本人自食惡果不足惜钥屈,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,001評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望坝辫。 院中可真熱鬧篷就,春花似錦、人聲如沸近忙。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,657評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽及舍。三九已至未辆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間锯玛,已是汗流浹背咐柜。 一陣腳步聲響...
    開封第一講書人閱讀 32,811評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留攘残,地道東北人拙友。 一個月前我還...
    沈念sama閱讀 47,685評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像歼郭,于是被迫代替她去往敵國和親遗契。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,573評論 2 353

推薦閱讀更多精彩內(nèi)容