物聯網數據儲存與分析(下)
在上集的文章中,我們完成了數據採集、數據清洗、資料倉儲之後,再來就進入到資料分析及視覺化的圖表呈現,如果沒有看過上集的人,建議先回頭看完上集的內容。
Tableau基礎概念
Tableau可以說是目前最廣受歡迎的企業數據分析工具(BI),可以透過各種數據連接器(Connector),從一個或多個的數據資料庫中,依照不同的商業分析需求,使用SQL語法將數據查詢出來,再設定視覺化圖表來呈現數據分析的結果。
Tableau的功能版本
Tableau常見的版本可以分為Online, Server與Desktop三種版本,Online版本是以SaaS的方式提供線上服務,僅需使用訂閱的方式,依照使用人數及角色區分進行付費即可;Server版本則是提供On-Premise的方式進行部署,需要採購授權金鑰,適合用在企業內部,不希望公開的環境之中;Desktop則單純為本地運作的版本,需要採購授權金鑰,但能夠與Online或Server版本進行連線,能從雲端下載各種已經存在的圖表或資料來源,亦能發表本地的資料,上傳至雲端環境之中,來達到協作的便利性。因此在選擇上,會依據使用情境、預算及使用人數來決定Online或Server版本,以及選用搭配Desktop版本來使用Tableau的功能。
Tableau Server建置簡介
想要利用AWS的EC2手動建置Tableau server環境是一件困難的事情,但幸運的是,AWS與Tableau官方在提供了CloudFormation的模板,並且從AWS Marketplace上訂閱所需的作業系統版本CentOS 7 (x86_64) — with Updates HVM,即可快速完成部署的流程。依照使用狀況來建立獨立(Standalone)或叢集(Cluster)的雲端環境,通常在預算考量下,在測試環境採用獨立建置(single-node),在正式環境採用叢集方式(multi-node),差別在於啟動一台或多台EC2實例。由於Tableau Server官方指定運行的環境,至少需要運行在EC2 m4.2xlarge的等級之上,運行一個月至少需要300美金的預算,若是採用叢集方式,則至少需要兩台以上,並搭配附載網路平衡器(Network Load Balancer),整體建置每個月至少700美金的預算,所費不貲。
開始建置Tableau Server(Single Node)
在開始建置Tableau Server請先確認具備以下條件:
- 一組AWS帳號
- 請先於AWS Marketplace訂閱CentOS 7 (x86_64) — with Updates HVM(免費)
- AWS CDK運行環境及相關操作知識
- 下載本文的範例原始碼,連結至Github
準備就緒後,可以直接執行CDK的部署指令
// 初始化你的CDK環境
cdk bootstrap// 開始部署Tableau Server
cdk deploy --app='./bin/tableau-server.js' \
--parameters Username={YOUR USERNAME} \
--parameters Password={YOUR PASSWORD} \
--parameters LicenseKey={YOUR LICENSE KEY}
如果你的AWS本地環境配置不是預設的名稱,可以透過
--profile="YOUR AWS PROFILE"
來變更環境名稱。
在等候部署的期間,可以到AWS CloudFormation Console查看目前的進度,由於部署較為複雜,通常需要40~50分鐘的等待時間。
搭建完成後,可以從CloudFormation的Outputs中,得知Tableau Server的配置資料,分為管理控制台的位置以及Desktop連接位置。
TableauServerURL是主要的控制台介面網址,與Tableau Online的介面幾乎一至,可以提供給負責BI操作的人員進入使用。
依照所購買的授權方案,可以建立不同的角色及人數。角色可分為Creator、Explorer, Viewer,完整的角色說明請參考網址。
TableauServicesManagerURL是管理控制台,偏向給系統建置人員使用,可監控觀察節點的運作狀況、定期備份、設定授權金鑰等詳細功能。
連接Tableau Desktop
除了直接使用Tableau Server的控制台以外,也可以透過Desktop與Server進行資料及圖表的同步更新。
從CloudFormation的輸出中,可以取得PublicIPAddress,接著在選單[伺服器] > 登入 > 輸入IP位置,進行連線即可完成連接。
資料連接器
Tableau提供非常多元的資料連接器,對於不同的版本所支援的連接器也有所差異(詳情請見參考資料),針對AWS的資料庫服務包含Redshift, Athena(Desktop only), Aurora for MySQL, EMR Hadoop Hive共四種,連接時的授權方式也有所不同,本篇文章主要採用Redshift作為主要說明及範例。較為可惜的是Athena僅支援Desktop版本,其連線授權方式採用Access Key與Access Secret Key,礙於安全性問題,無法適用於公開的服務之中,因此無法採用。
接下來開始連接到上一個章節中,已經建立好的Redshift。
可以使用資料更新時間,以不同的時間單位(範例為每分鐘),作為曲線圖的X軸,以溫度數值的平均值,作為Y軸,即可繪製出基本的視覺化圖表。
圖表嵌入
透過Tableau官方提供的開發工具,我們可以將已經公開的線上圖表,嵌入到自己的物聯網平台之中。以往要能在前端網頁呈現各式各樣類型的視覺化圖表,尤其在商業需求不斷變化的情況下,可能需要經常更新圖表的顯示方式,這對開發資源來說是相當沈重的負擔,若能以嵌入的方式,負責商業分析的人員便可隨心所欲的對圖表做更動。
在開始實作嵌入以前,如果你是使用Tableau Desktop的版本進行分析,請先將Tableau專案發布到Server版本或Online版本之上。
你可以在範例原始碼中找到檔案(demo.html),並且取代下面所示的程式碼,使用你所建立的工作表分享網址。
url = 'https://prod-apnortheast-a.online.tableau.com/t/softchef/views/FromRedshift/1_1?:showAppBanner=false&:display_count=n&:showVizHome=n&:origin=viz_share_link'
var viz = new tableau.Viz(containerDiv, url...);
最後,使用瀏覽器開啟demo.html,即可看到與Tableau上相同設計的圖表。
總結
經過一連串的操作之後,總算能從裝置搜集數據,將大量的數據用極高效率的方式進行保存,並且隨時具備快速查詢分析的彈性,最後用強大的企業分析工具,將寶貴的數據用視覺圖形化的方式呈現。然而這還只是物聯網應用一半左右的故事而已,再來還要持續將資料轉換成更具經濟價值的形式,像是機器學習、數據經濟等更多應用,才能真正發揮導入物聯網後,最大的價值。
參考資料
What is the difference between Tableau Server and Tableau Online?
Quick start Tableau Server on AWS
https://aws.amazon.com/quickstart/architecture/tableau-server/
https://help.tableau.com/current/server/zh-tw/ts_aws_deployment_options.htm
Tableau Desktop supported connector
https://help.tableau.com/current/pro/desktop/en-gb/exampleconnections_overview.htm
Tableau Server & Online supported connector
https://help.tableau.com/current/server/en-us/creator_connect.htm