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的資料成果。資料服務為您解決了從數倉開發和資料大屏展現之間的最後一公裡。
本文将重點介紹通過資料服務快速将MaxCompute表生成實時查詢API并對接DataV進行大屏分析展現的使用方法。
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中的資料。隻要開通了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”來區分系列,此時要注意使用過濾器進行格式轉換。
#阿裡雲開年Hi購季#幸運抽好禮!
點此抽獎:https://www.aliyun.com/acts/product-section-2019/yq-lottery?utm_content=g_1000042901
原文連結
本文為雲栖社群原創内容,未經允許不得轉載。