共計(jì) 3833 個(gè)字符,預(yù)計(jì)需要花費(fèi) 10 分鐘才能閱讀完成。
行業(yè)資訊
服務(wù)器
云計(jì)算
如何分析 DataWorks 數(shù)據(jù)服務(wù) +MaxCompute Lightning 對(duì)接 DataV 最佳實(shí)踐
如何分析 DataWorks 數(shù)據(jù)服務(wù) +MaxCompute Lightning 對(duì)接 DataV 最佳實(shí)踐,相信很多沒有經(jīng)驗(yàn)的人對(duì)此束手無(wú)策,為此本文總結(jié)了問題出現(xiàn)的原因和解決方法,通過這篇文章希望你能解決這個(gè)問題。
1. 概述
數(shù)據(jù)服務(wù) (https://ds-cn-shanghai.data.aliyun.com) 是 DataWorks 產(chǎn)品家族的一員,提供了快速將數(shù)據(jù)表生成 API 的能力,通過可視化的向?qū)В环昼姟傲愦a”就可以生成 API,讓 API 開發(fā)從未有過如此便捷!同時(shí)支持自定義 API 查詢 SQL 功能,對(duì)您的個(gè)性化復(fù)雜查詢邏輯支持照樣不在話下。
DataWorks 數(shù)據(jù)服務(wù)提供 HTTP API 服務(wù),采用 Serverless 架構(gòu),您只需關(guān)注 API 本身的查詢邏輯,無(wú)需關(guān)心運(yùn)行環(huán)境等基礎(chǔ)設(shè)施,零運(yùn)維成本。
DataWorks 提供了涵蓋“數(shù)據(jù)集成 - 數(shù)據(jù)開發(fā) - 機(jī)器學(xué)習(xí) - 數(shù)據(jù)服務(wù)”全鏈路數(shù)據(jù)研發(fā)平臺(tái),數(shù)據(jù)服務(wù)作為連接數(shù)據(jù)應(yīng)用與數(shù)據(jù)倉(cāng)庫(kù)的橋梁,通過 MaxCompute Lightning 加速引擎,數(shù)據(jù)服務(wù)可以直接將原本只能離線查詢的 MaxCompute 表直接生成數(shù)據(jù) API 并進(jìn)行實(shí)時(shí)查詢,免去了您手工同步數(shù)據(jù)的煩惱,數(shù)據(jù)服務(wù)是您將數(shù)倉(cāng)建設(shè)成果服務(wù)化輸出的最佳工具。
目前,DataWorks 數(shù)據(jù)服務(wù)已經(jīng)與數(shù)據(jù)可視化的神器——DataV(https://data.aliyun.com/visual/datav)深度打通,數(shù)據(jù)服務(wù)生成的 API,可以直接在 DataV 中進(jìn)行可視化展現(xiàn)。您無(wú)需手工同步數(shù)據(jù),無(wú)需編寫復(fù)雜的 Java 代碼,無(wú)需搭建 WebServer,普通數(shù)據(jù)開發(fā)工程師、算法開發(fā)工程師、數(shù)據(jù)分析師甚至是產(chǎn)品業(yè)務(wù)人員,都可以使用數(shù)據(jù)服務(wù)“開發(fā)”數(shù)據(jù) API,然后快速在 DataV 中調(diào)用 API 和展示來(lái)自 MaxCompute 的數(shù)據(jù)成果。數(shù)據(jù)服務(wù)為您解決了從數(shù)倉(cāng)開發(fā)和數(shù)據(jù)大屏展現(xiàn)之間的最后一公里。
下面將重點(diǎn)介紹通過數(shù)據(jù)服務(wù)快速將 MaxCompute 表生成實(shí)時(shí)查詢 API 并對(duì)接 DataV 進(jìn)行大屏分析展現(xiàn)的使用方法。
2. 使用數(shù)據(jù)服務(wù)一分鐘生成 API
通過數(shù)據(jù)服務(wù)生成 API 主要包含創(chuàng)建數(shù)據(jù)源 - 配置 API- 發(fā)布 API 三個(gè)步驟,本文將簡(jiǎn)要介紹使用方法。
2.1 新建數(shù)據(jù)源
數(shù)據(jù)服務(wù)支持豐富的數(shù)據(jù)源類型,基本上常見數(shù)據(jù)源都囊括了,包含:
關(guān)系型數(shù)據(jù)庫(kù):RDS/DRDS/MySQL/PostgreSQL/Oracle/SQL Server
分析型數(shù)據(jù)庫(kù):AnalyticDB(ADS)
NoSQL 數(shù)據(jù)庫(kù):TableStore(OTS)/MongoDB
大數(shù)據(jù)存儲(chǔ):Lightning(MaxCompute)
在數(shù)據(jù)服務(wù)中的“服務(wù)開發(fā)”點(diǎn)擊新建按鈕,在下拉菜單中選擇“新建數(shù)據(jù)源”。
隨后將打開數(shù)據(jù)集成中的數(shù)據(jù)源頁(yè)面,在這里可以新建您需要訪問的數(shù)據(jù)源。
注意:JDBC 擴(kuò)展參數(shù)中的“sslmode=require prepareThreshold=0”是必須的,不可刪除,否則會(huì)無(wú)法連接。
2.2 新建 API
創(chuàng)建好數(shù)據(jù)源后,回到數(shù)據(jù)服務(wù)產(chǎn)品頁(yè)面,我們就可以進(jìn)行 API 的生成配置了,本文以向?qū)J缴?API 為例。
點(diǎn)擊 服務(wù)開發(fā) -“新建”-“生成 API”-“向?qū)J健保韵驅(qū)J娇梢暬渲玫姆绞缴?API。在彈出的對(duì)話框中填寫 API 基本信息,這里以查詢成交金額增長(zhǎng)趨勢(shì) API 為例,如下所示:
然后點(diǎn)擊右側(cè)的“返回參數(shù)”,設(shè)置參數(shù)描述信息。
注意:如果不設(shè)置請(qǐng)求參數(shù),則需要開啟“返回結(jié)果分頁(yè)”開關(guān),進(jìn)行分頁(yè)查詢,以避免單次查詢返回?cái)?shù)據(jù)量過大影響性能。
到此,一個(gè) API 就已經(jīng)生成好了,是不是超簡(jiǎn)單!
2.3 發(fā)布 API
API 測(cè)試通過后就可以進(jìn)行發(fā)布。點(diǎn)擊工具條右方的“發(fā)布”即可將 API 發(fā)布。發(fā)布后,可以點(diǎn)擊項(xiàng)部導(dǎo)航條中的“服務(wù)管理”查看 API 詳情。若您要調(diào)用 API,請(qǐng)查看“服務(wù)管理”-“API 調(diào)用”頁(yè)面,數(shù)據(jù)服務(wù)提供了簡(jiǎn)單身份認(rèn)證(AppCode)和加密簽名身份認(rèn)證(AppKey AppSecret)兩種認(rèn)證方式,您可以自由選擇。下方將介紹在 DataV 中進(jìn)行數(shù)據(jù)服務(wù) API 的調(diào)用。
是不是有點(diǎn)小激動(dòng)?“開發(fā)”一個(gè) API 如來(lái)沒有過如此簡(jiǎn)單!這簡(jiǎn)直不能稱之為“開發(fā)”!
3. 在 DataV 中調(diào)用數(shù)據(jù)服務(wù)的 API
接下來(lái)要進(jìn)行 DataV 數(shù)據(jù)大屏的配置,主要分為“添加數(shù)據(jù)”-“新建可視化”兩個(gè)步驟。
3.1 添加數(shù)據(jù)服務(wù)為數(shù)據(jù)源
依次點(diǎn)擊“我的數(shù)據(jù)”-“添加數(shù)據(jù)”,在“類型”中選擇“DataWorks 數(shù)據(jù)服務(wù)”,填寫數(shù)據(jù)源名稱,然后選擇您的 DataWorks 項(xiàng)目(工作空間)。DataV 對(duì)接數(shù)據(jù)服務(wù)采用的是更加安全的加密簽名身份認(rèn)證,因此這里需要填寫 AppKey 和 AppSecret。
添加好數(shù)據(jù)服務(wù)數(shù)據(jù)源后,就可以在大屏中進(jìn)行數(shù)據(jù)展示了。
3.2 在大屏中調(diào)用數(shù)據(jù)服務(wù) API
在“我的可視化”中點(diǎn)擊“新建可視化”,本文選擇了“智能工廠”模板,如下所示:
模板中的組件自帶了靜態(tài)數(shù)據(jù),下面將通過將模板中間的“基本折線圖”改為調(diào)用上面創(chuàng)建好的“查詢成交金額增長(zhǎng)趨勢(shì)”的 API 為例,講解如何在組件中使用數(shù)據(jù)服務(wù) API。
選中基本折線圖組件,切換到數(shù)據(jù)面板,在“數(shù)據(jù)源類型”中選擇“DataWorks 數(shù)據(jù)服務(wù)”,然后選擇剛剛創(chuàng)建的數(shù)據(jù)源“我的數(shù)據(jù)服務(wù)”,選擇“查詢成交金額增長(zhǎng)趨勢(shì)”這個(gè) API,再設(shè)置查詢參數(shù),這里將 pageSize 設(shè)置為“31”以查詢一個(gè)月的數(shù)據(jù)。
點(diǎn)擊“查看數(shù)據(jù)響應(yīng)結(jié)果”可以看到 API 的查詢結(jié)果。
然后填寫字段映射關(guān)系,在“x”中填寫“date”將日期作為橫軸,在“y”中填寫“amount”將成交金額作為縱軸。
可以看到,當(dāng)前 x 和 y 無(wú)法匹配到字段。這是由于 DataV 對(duì)數(shù)據(jù)格式有一定要求,不能識(shí)別結(jié)構(gòu)較深的字段,因此這里要添加一個(gè)數(shù)據(jù)過濾器,過濾掉不必要的字段,在本例中直接返回“rows”數(shù)組即可。
勾選“使用過濾器”,點(diǎn)擊“新建過濾器”,這里支持編寫 JS 代碼對(duì)數(shù)據(jù)結(jié)果進(jìn)行二次過濾和處理,過濾器的 data 參數(shù)為 API 返回結(jié)果 JSON 對(duì)象。在本例中,我們只需要返回 API 結(jié)果中的 rows 數(shù)組,故只需要輸入代碼 return data.data.rows; 即可,然后在下方就可以查看過濾后的結(jié)果,點(diǎn)擊“完成”即可。
添加好過濾器后就可以看到此時(shí)字段已經(jīng)可以匹配成功了。
但此時(shí)折線圖并沒有正確展示,由于 API 返回的日期格式與組件默認(rèn)的格式不一樣,因此我們還需要設(shè)置一下折線橫軸的日期格式。切換到“配置”面板,在“x 軸”-“軸標(biāo)簽”中選擇數(shù)據(jù)種類為“時(shí)間型”,數(shù)據(jù)格式選擇本 API 所返回的格式“2016/01/01”,即可看見折線圖已經(jīng)可以正常展示了。
最后預(yù)覽一下,看看成品。
至此,我們就完成了通過數(shù)據(jù)服務(wù)將 MaxCompute 表生成 API,然后在 DataV 數(shù)據(jù)大屏中進(jìn)行展示的所有步驟。采用類似的步驟,將大屏的其他組件的數(shù)據(jù)源都配置為 DataWorks 數(shù)據(jù)服務(wù) API 就可以完成整個(gè)大屏的創(chuàng)作,是不是感覺很 easy!
4. 總結(jié)
DataWorks 數(shù)據(jù)服務(wù)與 DataV 進(jìn)行無(wú)縫打通后,則不需要使用 DataV 中的 API 數(shù)據(jù)源去填寫一個(gè) URL 調(diào)用 API,直接新建一個(gè) DataWorks 數(shù)據(jù)服務(wù)作為數(shù)據(jù)源,就可以直接選用數(shù)據(jù)服務(wù)中的 API,無(wú)需每個(gè) API 都設(shè)置 AppKey 和 AppSecret 認(rèn)證信息,并且支持通過表單填寫 API 參數(shù),使用起來(lái)十分快捷方便和安全可靠。通過數(shù)據(jù)服務(wù),您可以將 MaxCompute 中加工好的數(shù)據(jù)結(jié)果,直接在 DataV 中進(jìn)行呈現(xiàn),“數(shù)據(jù)開發(fā) - 數(shù)據(jù)服務(wù) - 數(shù)據(jù)分析展現(xiàn)”一氣呵成!
最后,提供一些小貼士及注意事項(xiàng),供大家參考:
DataWorks 數(shù)據(jù)服務(wù)向?qū)J缴?API 只支持單表簡(jiǎn)單條件查詢,腳本模式支持用戶編寫查詢 SQL 語(yǔ)句,支持多表關(guān)聯(lián)查詢、函數(shù)以及復(fù)雜條件。大家可以根據(jù)自己的需求靈活選擇。
Lightning 采用的 PostgreSQL 的語(yǔ)法,故在編寫 SQL 時(shí),要注意使用 PostgreSQL 函數(shù),而不是 MaxCompute 的 UDF。目前 Lightning 還只支持 max_pt 這個(gè) MaxCompute UDF,可用于獲取當(dāng)前最新分區(qū)。還有,連接字符串時(shí)使用“||”。
Lightning 目前只支持秒級(jí)查詢,并且查詢的 MaxCompute 不宜過大(控制在 GB 級(jí)),盡量將分區(qū)作為請(qǐng)求參數(shù),盡量避免掃描過多分區(qū),否則會(huì)比較慢。
如果您要求毫秒級(jí) API 查詢,則建議采用關(guān)系型數(shù)據(jù)庫(kù)、NoSQL 數(shù)據(jù)庫(kù)或 AnalyticDB 作為數(shù)據(jù)源。
DataV 組件要求的數(shù)據(jù)格式是個(gè)數(shù)組,數(shù)據(jù)服務(wù)生成的 API 返回結(jié)果是個(gè)帶有錯(cuò)誤碼的完整 JSON,因此要使用過濾器對(duì) API 結(jié)果進(jìn)行處理。您可以選擇在 DataV 中添加過濾器,也可以選擇直接在數(shù)據(jù)服務(wù)配置 API 時(shí)添加過濾器。一般來(lái)說(shuō),對(duì)于未分頁(yè)查詢的 API,直接返回“data”數(shù)組就行,對(duì)于分頁(yè)查詢的 API 直接返回“data.rows 數(shù)組。
若你要在 DataV 的折線圖或柱狀圖中添加多個(gè)系列,DataV 一般要求每個(gè)系列的數(shù)據(jù)是一個(gè)對(duì)象,并通過字段“s”來(lái)區(qū)分系列,此時(shí)要注意使用過濾器進(jìn)行格式轉(zhuǎn)換。
看完上述內(nèi)容,你們掌握如何分析 DataWorks 數(shù)據(jù)服務(wù) +MaxCompute Lightning 對(duì)接 DataV 最佳實(shí)踐的方法了嗎?如果還想學(xué)到更多技能或想了解更多相關(guān)內(nèi)容,歡迎關(guān)注丸趣 TV 行業(yè)資訊頻道,感謝各位的閱讀!