1. 程式人生 > >海量大數據大屏分析展示一步到位:DataWorks數據服務對接DataV最佳實踐

海量大數據大屏分析展示一步到位:DataWorks數據服務對接DataV最佳實踐

對話框 添加多個 分享 導航條 產品 vpd 一個數 demo 方便

  • 概述
    數據服務(https://ds-cn-shanghai.data.aliyun.com) 是DataWorks產品家族的一員,提供了快速將數據表生成API的能力,通過可視化的向導,一分鐘“零代碼”就可以生成API,讓API開發從未有過如此便捷!同時支持自定義API查詢SQL功能,對您的個性化復雜查詢邏輯支持照樣不在話下。
  • DataWorks數據服務提供HTTP API服務,采用Serverless架構,您只需關註API本身的查詢邏輯,無需關心運行環境等基礎設施,零運維成本。

    DataWorks提供了涵蓋“數據集成-數據開發-機器學習-數據服務”全鏈路數據研發平臺,數據服務作為連接數據應用與數據倉庫的橋梁,通過MaxCompute Lightning加速引擎,數據服務可以直接將原本只能離線查詢的MaxCompute表直接生成數據API並進行實時查詢,免去了您手工同步數據的煩惱,數據服務是您將數倉建設成果服務化輸出的最佳工具。

    目前,DataWorks數據服務已經與數據可視化的神器——DataV(https://data.aliyun.com/visual/datav)深度打通,數據服務生成的API,可以直接在DataV中進行可視化展現。您無需手工同步數據,無需編寫復雜的Java代碼,無需搭建WebServer,普通數據開發工程師、算法開發工程師、數據分析師甚至是產品業務人員,都可以使用數據服務“開發”數據API,然後快速在DataV中調用API和展示來自MaxCompute的數據成果。數據服務為您解決了從數倉開發和數據大屏展現之間的最後一公裏。

    本文將重點介紹數據服務與DataV聯合進行API開發和大屏展現的使用方法。

    1. 使用數據服務一分鐘生成API
      通過數據服務生成API主要包含創建數據源->配置API->發布API三個步驟,本文將簡要介紹使用方法。

    2.1 新建數據源
    數據服務支持豐富的數據源類型,基本上常見數據源都囊括了,包含:
    關系型數據庫:RDS/DRDS/MySQL/PostgreSQL/Oracle/SQL Server
    分析型數據庫:AnalyticDB(ADS)
    NoSQL數據庫:TableStore(OTS)/MongoDB
    大數據存儲:Lightning(MaxCompute)

    在數據服務中的“服務開發”點擊新建按鈕,在下拉菜單中選擇“新建數據源”。

    技術分享圖片

    隨後將打開數據集成中的數據源頁面,在這裏可以新建您需要訪問的數據源。

    技術分享圖片

    本文將以Lightning數據源為例。通過Lighning數據源可以直接實時查詢MaxCompute中的數據。

    註意:Lightning目前是內測階段,需要單獨申請才能開通,申請地址:https://help.aliyun.com/document_detail/89747.html。
    也可以加入數據服務用戶群(釘釘群號21993540)咨詢Lightning服務的開通事項。

    申請開通MaxCompute項目的Lightning服務後,就可以進行數據源配置了。點擊“新建數據源”,選擇“Lightning”,按頁面提示進行配置,測試連通性測試通過後即可。您可以點擊這裏(https://help.aliyun.com/document_detail/89757.html)查看Lightning的連接信息,如Lightning Endpoint、Port。

    技術分享圖片

    註意:JDBC擴展參數中的“sslmode=require&prepareThreshold=0”是必須的,不可刪除,否則會無法連接。

    2.2 新建API
    創建好數據源後,回到數據服務產品頁面,我們就可以進行API的生成配置了,本文以向導模式生成API為例。

    點擊"服務開發"-“新建”-“生成API”-“向導模式”,以向導模式可視化配置的方式生成API。在彈出的對話框中填寫API基本信息,這裏以查詢成交金額增長趨勢API為例,如下所示:

    技術分享圖片

    點擊確認後,進行API配置頁面。

    首先進行表設置,依次選擇數據源類型-數據源名稱-數據表名稱。這裏選擇上一步創建的Lightning數據源,然後選擇你要查詢的MaxCompute表,這裏以成交金額表“demo_trade_amount”為例,該表中存儲了一個月的成交金額數據。

    選擇好表之後,會自動展示表的字段列表。然後勾選你要作為API請求參數的字段和作為返回參數的字段。在本例中,我們為了查詢成交金額趨勢,因此要返回所有數據,即將日期和成交金額都作為返回參數,不設請求參數。

    技術分享圖片

    然後點擊右側的“返回參數”,設置參數描述信息。
    註意:如果不設置請求參數,則需要開啟“返回結果分頁”開關,進行分頁查詢,以避免單次查詢返回數據量過大影響性能。

    技術分享圖片

    最後進行API測試。點擊工具條右邊的“測試”,填寫API請求參數(由於打開了分頁查詢開關,系統會自動添加兩個分頁參數),點擊“開始測試”即可,如下圖所示。

    在測試頁面中可以看到API延遲,可以看到通過Lightning查詢MaxCompute表只花費了1秒多,比直接通過MaxCompute SQL查詢快了幾十上百倍!

    技術分享圖片

    到此,一個API就已經生成好了,是不是超簡單!

    2.3 發布API
    API測試通過後就可以進行發布。點擊工具條右方的“發布”即可將API發布。發布後,可以點擊項部導航條中的“服務管理”查看API詳情。若您要調用API,請查看“服務管理”-“API調用”頁面,數據服務提供了簡單身份認證(AppCode)和加密簽名身份認證(AppKey&AppSecret)兩種認證方式,您可以自由選擇。下方將介紹在DataV中進行數據服務API的調用。

    是不是有點小激動?“開發”一個API如來沒有過如此簡單!這簡直不能稱之為“開發”!

    1. 在DataV中調用數據服務的API
      接下來要進行DataV數據大屏的配置,主要分為“添加數據”-“新建可視化”兩個步驟。

    3.1 添加數據服務為數據源
    依次點擊“我的數據”-“添加數據”,在“類型”中選擇“DataWorks數據服務”,填寫數據源名稱,然後選擇您的DataWorks項目(工作空間)。DataV對接數據服務采用的是更加安全的加密簽名身份認證,因此這裏需要填寫AppKey和AppSecret。

    技術分享圖片

    AppKey和AppSecret從數據服務的“服務管理”-“API調用”頁面中查看,如下所示:

    技術分享圖片

    添加好數據服務數據源後,就可以在大屏中進行數據展示了。

    3.2 在大屏中調用數據服務API
    在“我的可視化”中點擊“新建可視化”,本文選擇了“智能工廠”模板,如下所示:

    技術分享圖片

    模板中的組件自帶了靜態數據,下面將通過將模板中間的“基本折線圖”改為調用上面創建好的“查詢成交金額增長趨勢”的API為例,講解如何在組件中使用數據服務API。

    選中基本折線圖組件,切換到數據面板,在“數據源類型”中選擇“DataWorks數據服務”,然後選擇剛剛創建的數據源“我的數據服務”,選擇“查詢成交金額增長趨勢”這個API,再設置查詢參數,這裏將pageSize設置為“31”以查詢一個月的數據。

    技術分享圖片

    點擊“查看數據響應結果”可以看到API的查詢結果。
    然後填寫字段映射關系,在“x”中填寫“date”將日期作為橫軸,在“y”中填寫“amount”將成交金額作為縱軸。

    技術分享圖片

    可以看到,當前x和y無法匹配到字段。這是由於DataV對數據格式有一定要求,不能識別結構較深的字段,因此這裏要添加一個數據過濾器,過濾掉不必要的字段,在本例中直接返回“rows”數組即可。

    勾選“使用過濾器”,點擊“新建過濾器”,這裏支持編寫JS代碼對數據結果進行二次過濾和處理,過濾器的data參數為API返回結果JSON對象。在本例中,我們只需要返回API結果中的rows數組,故只需要輸入代碼 "return data.data.rows;" 即可,然後在下方就可以查看過濾後的結果,點擊“完成”即可。

    技術分享圖片

    添加好過濾器後就可以看到此時字段已經可以匹配成功了。

    技術分享圖片

    但此時折線圖並沒有正確展示,由於API返回的日期格式與組件默認的格式不一樣,因此我們還需要設置一下折線橫軸的日期格式。切換到“配置”面板,在“x軸”-“軸標簽”中選擇數據種類為“時間型”,數據格式選擇本API所返回的格式“2016/01/01”,即可看見折線圖已經可以正常展示了。

    技術分享圖片

    最後預覽一下,看看成品。

    技術分享圖片

    至此,我們就完成了通過數據服務將MaxCompute表生成API,然後在DataV數據大屏中進行展示的所有步驟。采用類似的步驟,將大屏的其他組件的數據源都配置為DataWorks數據服務API就可以完成整個大屏的創作,是不是感覺很easy!

    1. 總結
      DataWorks數據服務與DataV進行無縫打通後,則不需要使用DataV中的"API"數據源去填寫一個URL調用API,直接新建一個DataWorks數據服務作為數據源,就可以直接選用數據服務中的API,無需每個API都設置AppKey和AppSecret認證信息,並且支持通過表單填寫API參數,使用起來十分快捷方便和安全可靠。通過數據服務,您可以將MaxCompute中加工好的數據結果,直接在DataV中進行呈現,“數據開發-數據服務-數據分析展現”一氣呵成!

    最後,提供一些小貼士及註意事項,供大家參考:

    DataWorks數據服務向導模式生成API只支持單表簡單條件查詢,腳本模式支持用戶編寫查詢SQL語句,支持多表關聯查詢、函數以及復雜條件。大家可以根據自己的需求靈活選擇。
    Lightning采用的PostgreSQL的語法,故在編寫SQL時,要註意使用PostgreSQL函數,而不是MaxCompute的UDF。目前Lightning還只支持max_pt這個MaxCompute UDF,可用於獲取當前最新分區。還有,連接字符串時使用“||”。
    Lightning目前只支持秒級查詢,並且查詢的MaxCompute不宜過大(控制在GB級),盡量將分區作為請求參數,盡量避免掃描過多分區,否則會比較慢。
    如果您要求毫秒級API查詢,則建議采用關系型數據庫、NoSQL數據庫或AnalyticDB作為數據源。
    DataV組件要求的數據格式是個數組,數據服務生成的API返回結果是個帶有錯誤碼的完整JSON,因此要使用過濾器對API結果進行處理。您可以選擇在DataV中添加過濾器,也可以選擇直接在數據服務配置API時添加過濾器。一般來說,對於未分頁查詢的API,直接返回“data”數組就行,對於分頁查詢的API直接返回“data.rows"數組。
    若你要在DataV的折線圖或柱狀圖中添加多個系列,DataV一般要求每個系列的數據是一個對象,並通過字段“s”來區分系列,此時要註意使用過濾器進行格式轉換。

    海量大數據大屏分析展示一步到位:DataWorks數據服務對接DataV最佳實踐