物聯網數據儲存與分析(下)

MinChe Tsai
SoftChef Blog_CN
Published in
Nov 20, 2020

在上集的文章中,我們完成了數據採集、數據清洗、資料倉儲之後,再來就進入到資料分析及視覺化的圖表呈現,如果沒有看過上集的人,建議先回頭看完上集的內容。

物聯網數據儲存與分析(上)

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美金的預算,所費不貲。

Standalone(Single node)
Cluster(Multi-node)
左圖為簡易Standalone(Single node)的雲端架構, 右圖為叢集Cluster(Multi-node)的雲端架構

開始建置Tableau Server(Single Node)

在開始建置Tableau Server請先確認具備以下條件:

  1. 一組AWS帳號
  2. 請先於AWS Marketplace訂閱CentOS 7 (x86_64) — with Updates HVM(免費)
  3. AWS CDK運行環境及相關操作知識
  4. 下載本文的範例原始碼,連結至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分鐘的等待時間。

在等候部署的期間,可以到AWS CloudFormation Console查看目前的進度,由於部署較為複雜,通常需要40~50分鐘的等待時間。
部署Tableau Server的過程

搭建完成後,可以從CloudFormation的Outputs中,得知Tableau Server的配置資料,分為管理控制台的位置以及Desktop連接位置。

可以從CloudFormation的Outputs中,得知Tableau Server的配置資料。

TableauServerURL是主要的控制台介面網址,與Tableau Online的介面幾乎一至,可以提供給負責BI操作的人員進入使用。

Tableau Server控制台首頁
建立工作簿的畫面

依照所購買的授權方案,可以建立不同的角色及人數。角色可分為Creator、Explorer, Viewer,完整的角色說明請參考網址

依照所購買的授權方案,可以建立不同的角色及人數。

TableauServicesManagerURL是管理控制台,偏向給系統建置人員使用,可監控觀察節點的運作狀況、定期備份、設定授權金鑰等詳細功能。

登入控制台後,可以從控制台中設定使用者、監控觀察節點的運作情況,以及授權金鑰等功能。

連接Tableau Desktop

除了直接使用Tableau Server的控制台以外,也可以透過Desktop與Server進行資料及圖表的同步更新。

Tableau Desktop的畫面

從CloudFormation的輸出中,可以取得PublicIPAddress,接著在選單[伺服器] > 登入 > 輸入IP位置,進行連線即可完成連接。

Tableau Desktop連接Tableau Server

資料連接器

Tableau提供非常多元的資料連接器,對於不同的版本所支援的連接器也有所差異(詳情請見參考資料),針對AWS的資料庫服務包含Redshift, Athena(Desktop only), Aurora for MySQL, EMR Hadoop Hive共四種,連接時的授權方式也有所不同,本篇文章主要採用Redshift作為主要說明及範例。較為可惜的是Athena僅支援Desktop版本,其連線授權方式採用Access Key與Access Secret Key,礙於安全性問題,無法適用於公開的服務之中,因此無法採用。

接下來開始連接到上一個章節中,已經建立好的Redshift。

連接至Redshift
連接成功後,即可查詢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上相同設計的圖表。

總結

經過一連串的操作之後,總算能從裝置搜集數據,將大量的數據用極高效率的方式進行保存,並且隨時具備快速查詢分析的彈性,最後用強大的企業分析工具,將寶貴的數據用視覺圖形化的方式呈現。然而這還只是物聯網應用一半左右的故事而已,再來還要持續將資料轉換成更具經濟價值的形式,像是機器學習、數據經濟等更多應用,才能真正發揮導入物聯網後,最大的價值。

--

--

MinChe Tsai
SoftChef Blog_CN

專注於物聯網雲端架構以及各種應用場景, 有任何商業運用想法, 請與我聯絡minche@softchef.com・軟領科技CTO