PowerBI Streaming using PubNub dataset

微軟的PowerBI是一個殺手級的Saas服務,別的不說,光是Real-time呈現這個功能,以往的投資門檻沒有準備個幾百萬新台幣是沒有辦法實現的,而今5分鐘申請加開通,一個月10美金(以目前的匯率是新台幣320元)的訂閱費,就可以享受月月有新圖的超強報表工具。
這一篇是要以 PubNub公司提供的Streaming資料集來介紹,PowerBI Real-time dash board功能

什麼是Stream analytics串流分析?
Azure 串流分析是微軟推出的Saas服務,提供了專人維護管理並且符合成本效益的即時事件處理引擎,打破既有的資料限制(例如必需等到日結才可以看到當日銷售狀況)以獲取更深入的見解。 串流分析可讓您輕易地對串流自裝置、感應器、網站、社交媒體、應用程式、基礎結構系統和其他項目的資料設定即時分析計算。

串流分析的用途為何?
現今,大量的資料都需要透過網路高速流動。 組織若能即時處理串流資料並採取相關動作,將可大幅改善效率,並在市場上脫穎而出。 各種產業都有應用即時串流分析的狀況:金融服務公司所提供的個人化、即時股票交易分析和警示、即時詐騙偵測、資料及身分識別保護服務、可靠地擷取和分析數位裝置 (物聯網 IoT) 中的感應器和傳動器所產生的資料、網頁點選流(Click streaming)分析,以及客戶體驗若在某個時間範圍內降低時會發出警示的客戶關係管理 (CRM) 應用程式。 企業正尋求以最具彈性、可靠且符合成本效益的方式執行這類即時事件資料流資料分析,以在高度競爭的現代商務世界中獲致成功。

主要功能和優點

  1. 容易使用: 為了最佳化以及方便使用,串流分析可使用 T-SQL 變數,並且為客戶省去處理串流處理系統之技術複雜性的需求。 使用瀏覽器中查詢編輯器中的串流分析查詢語言,您可以應用微軟 Intelli-sense自動完成功能,以協助您更快速而輕鬆地實作出時間序列的聯結、查詢、彙總、預測及篩選等。
  2. 延展性: 串流分析能夠處理高達 1 GB/秒的高事件輸送量。透過與 Azure Event Hub和 Azure IoT Hub 整合,可讓解決方案每秒擷取數百萬來自連線裝置、點擊資料流(Click stream)及記錄檔等項目的事件。 為達到此目的,串流分析運用事件中樞資料分割功能,每個資料分割可產生 1 MB/秒。 使用者可將計算分割成查詢定義內的數個邏輯步驟,且每個步驟都能夠進一步分割以增加研展性。
  3. 可靠性、可重複性及快速修復: 串流分析雲端受管理服務可透過內建的復原功能,在失敗時防止資料遺失並讓業務繼續營運。 此服務具備內部維護狀態的能力,因此會提供可重複的結果,確保能封存事件並在日後重新套用處理,且一律取得相同的結果。 這項功能可讓客戶及時回頭檢視,並在執行根本原因分析和假設狀況分析等案例時調查計算方式。
  4. 低成本: 屬於雲端服務的串流分析已最佳化,可讓使用者以非常低廉的成本開始運作並維護即時分析解決方案。 該服務的建置可讓您根據串流單位使用量和系統處理的資料量執行隨用隨付。 使用量衍生自所處理的事件量,以及佈建在叢集內,用來處理個別串流分析工作的計算能力。
  5. 參考資料: 串流分析可讓使用者指定及使用參考資料。 這可能是歷史資料,或只是變動頻率較低的非串流資料。 系統可以簡化參考資料的使用,使資料被視為任何其他要與即時擷取的其他事件資料流聯結以執行轉換的傳入事件資料流。
  6. 使用者定義函式︰ 串流分析已與 Azure Machine Learning 整合,可隨著串流分析查詢定義 Machine Learning 中的函式呼叫。 這能擴充串流分析的功能,以便利用現有的 Azure Machine Learning 解決方案。
  7. 連接性: 串流分析會直接連接到 Azure Event Hub和 Azure IoT Hub進行串流擷取,並連接到 Azure Blob 服務以取得歷史資料。 結果可以從串流分析寫入到 Azure 儲存體 Blob 或資料表、Azure SQL DB、Azure Data Lake Store、DocumentDB、事件中樞、Azure 服務匯流排主題或佇列以及 Power BI,它可在其中視覺化、由工作流程進一步處理、透過 Azure HDInsight 在批次分析中使用,或以一系列事件的方式再次處理。 使用事件中樞時,您可以將多個串流分析與其他資料來源和處理引擎組合在一起,而不會失去計算的串流本質。

為了配合大環境 Open source或是建全 ISV(解決方案加值商)生態系的發展方向,目前支援三種整合方式,包含了 Push dataset、Streaming dataset、PubNub Streaming dataset。本文將以PubNub來示範,所以將分成 Streaming 資料集介紹以及PowerBI 儀表板設定二個部份。
在開始之前,我們要先了解這三種類型的差別:

若要使用PubNub的串流資料集需要先註冊,新增一個專案Project與資料集Keyset,在管理介面上就會得到一組金鑰,並將資料集的 Realtime Analytics 的On/Off開關開啟。
** 另外,如果你是可以接受用JSON格式並且存放至 Azure Blob Storage可以參考這一篇
接著依據自己熟悉的程式語言,去下載對應的SDK,例如 Python libary,就可以在程式中使用管理介面上的相關資料開始實作,例如寫一個1000次的迴圈,間隔1秒鐘發送一次Json格式的Sample 數據

pip install pubnub
from pubnub.pnconfiguration import PNConfiguration
from pubnub.pubnub import PubNub
import time, random
from datetime import datetime
pnconfig = PNConfiguration()
pnconfig.subscribe_key = "sub-c-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"
pnconfig.publish_key = "pub-c-xxxxx-xxxxx-xxxxx-xxxxx-xxxxx"
pubnub = PubNub(pnconfig)
for i in range(1000):
json_data = {
‘datetime’ : datetime.now().isoformat(),
‘number_one’ : random.randint(1,50),
‘number_two’ : random.randint(10,35),
‘letter_one’ : random.choice('ABCD'),
‘letter_two’ : random.choice('XY'),
}
pubnub.publish().channel('pubnub_demo').message(json_data).sync()
time.sleep(1)

以下將會以分解動作,說明這張即時更新的 Streaming 報表是怎麼做出來的?
1. Streaming data set
以下是參考雙方合作的官方文件中的範例,先登入PowerBI,在左邊找到Work space我的工作區,在右邊找到「+建立」按下去,選擇「儀表板」給新的儀表版取一個名字

剛建好的儀表板是一片空白的沃土,還需要用心的灌溉。在上方找到一個+(加入磚)
在選取來源區塊,下拉選到「即時資料」類別中的「自訂串流資料」並按下「下一步」
由於系統目前還沒有設定任何的串流資料集,所以還選不到。按下「加入串流資料集」
在本文是以PubNub來示範,所以選紅色的區塊
輸入資料集名稱、訂閱金鑰、通道名稱,甚於PAM驗證金鑰空白即可。接著按下一步系統會自動show出paser好的Json,將欄位資訊呈現,按下建立


2. PowerBI dash board setting
接下來毎一個視覺化呈現的元件,都會從儀表板的加入磚(+號)開始。由於剛才上一個部份已經將串流資料集設定好,接下來的操作就很直覺了

如下,已經有PubNub Sensor Network可以應用了,按下一步我們先從Cards開始本例是以不同城市的噪音值來做示範
輸入標題與副標題本例為了比較各城市以及排版,依序做了4個元件來呈現接著,新增磚建立第二種視覺化元件Line Charts在本例將會比較二個城市的濕度,再輔以歷史變化,所以在Axis軸下拉 timestamp
將二個城市的值下拉出來,預設的interval是1分鐘,接著按下一步
將標題與子標題輸入後,再按下一步
檢視成果
緊接著要再來示範Clustered Bar Charts
將4個城市的華式溫度下拉出來
將標題與子標題輸入後,再按下一步
檢視成果緊接著要再來示範Clustered Column Charts
跟上一個元件不同的地方,要加入歷史時序比較來強化比較的效果,所以在Axis軸下拉 timestamp
將4個城市的攝式溫度下拉出來
檢視成果
最後要示範Gauge Charts
由於本例是要比較三個城市的噪音,所以需要把觀測值、最大值、最小值,以不同的城市來填入
最後輸入標題與子標題即可
檢視成果
最後再排版一下即可

李秉錡 Christian Lee
Once worked at Microsoft Taiwan