1. 概述
數據服務(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開發和大屏展現的使用方法。
2. 使用數據服務一分鍾生成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如來沒有過如此簡單!這簡直不能稱之為“開發”!
3. 在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!
4. 總結
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”來區分系列,此時要注意使用過濾器進行格式轉換。
原文鏈接
本文為雲棲社區原創內容,未經允許不得轉載。