再度顛覆:Power BI支持自定義數據連接器

沒有最強,只有更強。自定義連接器打造專屬數據源。

今天來劑猛藥,明顯標題黨又吹顛覆;但真的等了好久好久,全部高能,非入門,感謝學Power Query,還來得及,不知道怎么學習,推薦你教程。

微軟截止目前發過兩部關于Power Query底層編程語言(M語言)的官方文檔:
1、《M語言規范》,本質在講語法(類似于英語語法,怎么造句);
2、《M標準庫函數》,本質在講單詞(類似于英語單詞,死記硬背吧)。

關于M語言的單詞(函數),截止目前一共有680個左右,參考文章:

有些高手已經自己學完了單詞,也學了語法,現在問題來了,在語法里有提到過section,但在Power Query的編輯器里卻用不起來,為什么?

因為真正的語言級編程支持在后面等著呢。今天文章將開啟使用section的里程碑分界線。這個如果不好理解,先看另一個事。

Power BI目前已經開始支持自定義數據連接器,這意味著我們可以封裝自己的數據源。

封裝一個日期表

封裝 是可復用哲學中最強大的思維模式(沒有之一),先來看看效果,我們通常需要一個日期表,可以是這樣:

WOW!在獲取數據里直接是【日期表】,這并不是Power BI內置的數據源,但現在可以自行創建數據源。

接著會看到:

這里是Excel120創建了用于【日期表】連接器的服務,所以會提醒一下,這不是微軟官方的連接器,是不是要繼續。繼續下一步:

日期表直接被返回啦!什么情況,這意味著針對日期表的構造過程早已完成,直接被完整封裝起來。

點擊【編輯】去一看究竟吧。不可思議的函數出現了:

學過PQ函數的同學都知道,在PQ中只能是系統函數類加點,如:Date.Year( ... ),自己定義的函數是不能帶點的,而這里居然用Excel120做了函數的引導類。

我們直接看看Excel120.Calendar會發生什么:

以及:

發現端倪了嗎?這里直接給出了函數的完整說明及文檔。

而且這個Excel120.Calendar函數支持任意參數排列如:

  • Excel120.Calendar() 返回當年日期表
  • Excel120.Calendar( year ) 返回所在年份的日期表
  • Excel120.Calendar( year1 , year2 )返回兩年間的日期表

這個構建日期表的函數也就滿足了我們的任意要求。這被稱為【OCP原則】(后續發文詳解【可復用的結構設計技術】)

至此,該日期表就完整的構建完畢。

作為本文福利,提供該靈活的日期表給到各位。當你需要日期表的時候只要點擊一下即可隨時待命生成。

自定義數據連接器的配置

如果你能拿到自定義數據連接器,那配置一下就一勞永逸地使用。

首先,這是Power BI Desktop中2017年7月更新后的新功能,在預覽中,我們需要打開預覽,如下所示:

如果感興趣,可以點擊【了解詳細信息】在微軟官方進一步了解其背后原理。

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

我們跟隨該項目的開發負責人一起了解下自定義數據連接器到底能干嘛。

數據連接器+想象力=新生產力

想象一下,數據連接器可以把所有的數據查詢都打包封裝,這樣就不用每次都重新寫M代碼。它現在及不久的未來更能實現更多想象空間:
1、針對REST API封裝出商業分析包
2、整合各種Power Query已經支持的數據源
3、對于SaaS服務實現流暢的OAuth驗證過程
4、提供加工封裝過的數據源確保隱私及安全
5、為將來和Power BI Content Pack打配合支持不同的授權模型
6、直接在ODBC級別封裝Direct Query特性

目前數據連接器僅僅在Power BI Desktop中可用,而且存在一些問題和很明顯需要改進的地方。

舉例說明自定義連接器的配置

首先,開啟PBID預覽功能。

配置過程如下:
1、先加BI佐羅好友,私信獲取該文件:【Calendar.mez】。數據連接器文件是一個以.mez結尾的被編譯過的二進制文件。這個二進制文件里面封裝了M代碼。
2、在【我的電腦】系統目錄【我的文檔】下建立目錄:Microsoft Power BI Desktop\Custom Connectors\,如下所示:

并把該文件放這里即可。

3、重啟Power BI Desktop,它會自動檢索這個目錄下的.mez文件,并嘗試加載,如果該文件編譯正確,則可正常加載,如果編譯有問題則解析不出來,無法加載,當然這里的案例文件【Calendar.mez】應該是沒有問題的。

加載完成,那就把它當成數據源來用吧。

如何制作自定義數據連接器

目前微軟相關項目組在github.com中放出了教程,有興趣的可以參考操作,相關資料在:https://github.com/Microsoft/DataConnectors

這里簡單說明一下整個過程:

首選,必須安裝Visual Studio作為開放平臺工具(自行搜索下載)。相當大,安裝在系統盤需要大概17G空間。
其次,按照微軟說明的順序來安裝相關組件及簡單配置,前文已包含該過程的部分描述,如下:

這里需要給VS安裝Power Query SDK,這樣就可以在VS里面寫M代碼并編譯成.mez文件了。

配置完成好,可以參考文章:

https://github.com/Microsoft/DataConnectors/blob/master/docs/m-extensions.md

繼續進行。

整個流程是:

因為有了Power Query SDK,就可以在VS中建立一個Power Query項目:

創建完成后,可以看到:

這就是可以寫M代碼的地方了。

我們在【xxx.pq】文件中寫代碼。
我們在【xxx.query.pq】文件中寫測試的查詢,可以測試【xxx.pq】中編寫的代碼是否正確。

當然,默認的案例是可以運行的,只需要按【F5】編譯執行即可。然后馬上會碰到第一個錯誤,如下所示:

這個錯誤的問題在于安全性級別的配置,做一個調整,如下所示:

重新按【F5】編譯執行,即可得到正確結果:

剩下的工作就是去發揮想象力的時候了。
你可以封裝你喜歡的任何M代碼進來。

M語言智能感知

Power Query一直沒有的遺憾是智能感知,終于有個地方可以好好寫代碼了,還是微軟的VS里最先集成了M代碼的語法感知。

體驗如下:

這里終于看到了三大重點:
1、section出現,函數的集合出現了,可以用【點】了
2、M代碼終于被格式化好了
3、智能感知來了

這便完整地從語言級別支持了M語言。關于Power Query以及M語言的詳細論述已經超過本文范圍。

正文完。


M語言是一門函數式泛型語言,其思維模式和C語言、VBA、JAVA是完全不同的,和javascript都是有些接近,所以用一般的學習方法及理解方法會繞很大的彎子。

而對于非技術的業務及分析人員是可以直接體驗到Power Query在拖拽生成時帶來的便利的,但我們說一門語言底層基因必須好,向上能讓小白用戶快速操作,向下能讓技術人員深度使用,運行能帶來強勁的性能效率,Power Query(M語言)還有很多改進空間和想象空間,與其看他成長,不如陪他成長

延伸閱讀:

什么是Power Query?
什么是Power BI?
什么是Power Pivot?

本文福利:

1、Excel120定制日期表連接器
2、Power Query官方白皮書(兩部)
3、Power Query國際頂級教程(兩部)

領取福利方法:

1、分享出去!

插播廣告:Excel120是不同于市面你看到的Excel教程的,正如你所見。與其看其成長,不如一起成長。公眾號后臺回復【真愛】領取專屬真愛卡,然后分享給好友,你的每次分享都會留下積累,直到一天你會得到【專屬福利】(非賣品)。

2、私信領取你想要的資料吧。
Power BI的學習從現在開始,從Excel到商務智能,不能再等了。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容