RestAPI Reader最佳實踐
數(shù)據(jù)集成RestAPI Reader插件提供了讀取RESTful接口數(shù)據(jù)的能力,通過配置HTTP請求地址,可獲取RestAPI類型的數(shù)據(jù)源數(shù)據(jù)(例如獲取時間范圍內(nèi)的數(shù)據(jù)、獲取分頁數(shù)據(jù)、循環(huán)請求參數(shù)獲取數(shù)據(jù)等),并轉(zhuǎn)換為數(shù)據(jù)集成支持的數(shù)據(jù)類型,傳遞給下游Writer插件。本文為您舉例介紹常見的RestAPI數(shù)據(jù)源使用示例。
背景信息
DataWorks數(shù)據(jù)集成RestAPI Reader在讀取數(shù)據(jù)和返回讀取結(jié)果的能力如下。
維度 | 能力支持 |
返回值類型 | 當前僅支持JSON格式的返回結(jié)果。 |
讀取數(shù)據(jù)類型 | 支持讀取INT、BOOLEAN、DATE、DOUBLE、FLOAT、LONG、STRING數(shù)據(jù)類型。 |
請求方式 | 支持請求方式為GET和POST的HTTP接口。 |
認證方式 | 支持無認證或者以下三種驗證方式:Basic Auth、Token Auth和Aliyun API Signature。您可以根據(jù)數(shù)據(jù)源API實際支持的驗證方式選擇對應(yīng)的驗證方式并配置驗證參數(shù)。
|
實踐1:讀取一個接口數(shù)據(jù),該接口根據(jù)時間范圍查詢數(shù)據(jù)
示例場景:接口定義
本實踐示例的場景為讀取一個RESTful接口數(shù)據(jù)并寫入一個MaxCompute分區(qū)表中,其中使用的示例RESTful接口為一個自建的測試GET接口,會根據(jù)接口輸入的時間范圍參數(shù)返回該時間范圍內(nèi)讀取到的數(shù)據(jù)。本示例的接口詳情如下。
您實際操作時,可根據(jù)您使用的接口調(diào)整相關(guān)配置,本示例的接口僅作為本實踐的示例,為您演示實踐的操作流程。
接口請求示例:
http://TestAPIAddress:Port/rest/test2?startTime=<StartTime>&endTime=<EndTime>
其中startTime和endTime為請求參數(shù),表示讀取數(shù)據(jù)的時間范圍。
返回結(jié)果示例:
{ "status": "success", "totalNum": 187, "data": [ { "axis": "series1", "value": 9191352, "createTime": "2023-01-04 00:07:20" }, { "axis": "series1", "value": 6645322, "createTime": "2023-01-04 00:14:47" }, { "axis": "series1", "value": 2078369, "createTime": "2023-01-04 00:22:13" }, { "axis": "series1", "value": 7325410, "createTime": "2023-01-04 00:29:30" }, { "axis": "series1", "value": 7448456, "createTime": "2023-01-04 00:37:04" }, { "axis": "series1", "value": 5808077, "createTime": "2023-01-04 00:44:30" }, { "axis": "series1", "value": 5625821, "createTime": "2023-01-04 00:52:06" } ] }
其中data為返回的數(shù)據(jù)存儲路徑,讀取到的數(shù)據(jù)有3個字段:
axis
、value
、createTime
。接口測試工具調(diào)用示例:
準備工作:創(chuàng)建MaxCompute分區(qū)表
本實踐將從接口處讀取的數(shù)據(jù)同步至MaxCompute分區(qū)表中,因此首先需要創(chuàng)建一張用于存儲同步過來的數(shù)據(jù)的分區(qū)表。
分區(qū)表配合覆蓋寫命令,可以實現(xiàn)分區(qū)覆蓋寫的效果,讓數(shù)據(jù)同步任務(wù)具備可重跑性,重跑時數(shù)據(jù)不會重復,并且在進一步做數(shù)據(jù)分析時,分區(qū)表也更易于數(shù)據(jù)分析。
建表語句如下。
CREATE TABLE IF NOT EXISTS ods_xiaobo_rest2
(
`axis` STRING
,`value` BIGINT
,`createTime` STRING
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 3650;
如果您使用的是標準版的DataWorks,并將創(chuàng)建的分區(qū)表提交到生產(chǎn)環(huán)境,后續(xù)您可以在數(shù)據(jù)地圖中查看到創(chuàng)建的此表。
配置同步任務(wù)
添加RestAPI數(shù)據(jù)源。
在DataWorks的工作空間中添加一個RestAPI類型的數(shù)據(jù)源,操作詳情請參見配置RestAPI數(shù)據(jù)源。核心配置要點如下。
url:配置為RESTful接口的地址。
驗證方法:您可以根據(jù)數(shù)據(jù)源API實際支持的驗證方式選擇對應(yīng)的驗證方式并配置驗證參數(shù)。
資源組連通性:RestAPI數(shù)據(jù)源僅支持使用獨享數(shù)據(jù)集成資源組,您需要選擇一個獨享數(shù)據(jù)集成資源組,測試數(shù)據(jù)源與此資源組的連通性。
創(chuàng)建離線同步節(jié)點并配置同步任務(wù)。
在DataWorks的DataStudio中創(chuàng)建一個離線同步節(jié)點,操作詳情請參見通過向?qū)J脚渲秒x線同步任務(wù),其中核心配置要點如下。
數(shù)據(jù)來源配置要點:
數(shù)據(jù)源:選擇上述步驟中創(chuàng)建的RestAPI數(shù)據(jù)源。
請求Method:本示例接口為GET接口,此處選擇GET。
返回數(shù)據(jù)結(jié)構(gòu):本示例接口的返回結(jié)果為一個JSON數(shù)組,此處選擇數(shù)組數(shù)據(jù)。
數(shù)據(jù)存儲json路徑:本示例接口獲取的數(shù)據(jù)存儲于data下,此處配置為data。
請求參數(shù):請求參數(shù)與調(diào)度參數(shù)搭配使用,實現(xiàn)每天同步當天數(shù)據(jù)的。
請求參數(shù)配置為
startTime=${extract_day} ${start_time}&endTime=${extract_day} ${end_time}
后續(xù)調(diào)度配置的調(diào)度參數(shù)中,新增三個調(diào)度參數(shù):
extract_day=${yyyy-mm-dd}
、start_time=00:00:00
、end_time=23:59:59
。
假設(shè)運行日期為2023-01-05,則
extract_day
取值為2023-01-04,請求參數(shù)將拼接為:startTime=2023-01-04 00:00:00&endTime=2023-01-04 23:59:59
。
數(shù)據(jù)去向配置要點:
數(shù)據(jù)源、表:選擇上述步驟中創(chuàng)建的MaxCompute分區(qū)表。
分區(qū)信息:分區(qū)信息和調(diào)度參數(shù)搭配使用。
分區(qū)信息配置為
${bizdate}
。后續(xù)調(diào)度配置的調(diào)度參數(shù)中,新增1個調(diào)度參數(shù):
bizdate=$bizdate
。
假設(shè)運行日期為2023-01-05,則分區(qū)信息的取值為20230104。
字段映射配置要點:根據(jù)接口中的數(shù)據(jù)定義,填寫RestAPI接口中的字段,注意字段名為大小寫敏感。添加好字段后,可以使用同名映射或者手動連線的方式,建立列映射。
測試運行
本實踐使用了調(diào)度參數(shù),因此完成離線同步任務(wù)的配置后,您可以在離線同步節(jié)點頁面頂部單擊帶參運行,根據(jù)界面提示填寫測試的調(diào)度參數(shù)取值,進行離線同步任務(wù)測試。測試運行完成后,您可以在界面下方查看運行日程,檢查調(diào)度參數(shù)取值是否符合預期。
數(shù)據(jù)檢查
您可以在DataStudio的臨時查詢中查看數(shù)據(jù)是否正確同步到了MaxCompute,臨時查詢的示例語句如下。
select * from ods_xiaobo_rest2 where ds='20230104' order by createtime;
其中ods_xiaobo_rest2為上述步驟中創(chuàng)建的MaxCompute分區(qū)表,20230104為測試運行時的分區(qū)取值。
運行完成后,您可以在下方的查詢結(jié)果處查看數(shù)據(jù)是否正確同步到了MaxCompute。
提交發(fā)布與補數(shù)據(jù)
測試運行與數(shù)據(jù)檢查完成后,您可將離線同步任務(wù)提交發(fā)布到生產(chǎn)環(huán)境,操作詳情請參見標準模式工作空間任務(wù)發(fā)布流程。提交發(fā)布成功后,您可以在DataWorks的運維中心中找到這個周期任務(wù),此時可通過補數(shù)據(jù)的方式,將歷史時間段內(nèi)的數(shù)據(jù)補上。補數(shù)據(jù)的功能介紹和操作指導請參見執(zhí)行補數(shù)據(jù)并查看補數(shù)據(jù)實例。
實踐2:讀取一個接口數(shù)據(jù),該接口為一個分頁的RestAPI接口
示例場景:接口定義
本實踐示例的場景為讀取一個RESTful接口數(shù)據(jù)并寫入一個MaxCompute分區(qū)表中,其中使用的示例RESTful接口為一個自建的測試GET接口,本示例的接口詳情如下。
您實際操作時,可根據(jù)您使用的接口調(diào)整相關(guān)配置,本示例的接口僅作為本實踐的示例,為您演示實踐的操作流程。
接口請求示例:
http://TestAPIAddress:Port/rest/test1?pageSize=5&pageNum=1
其中pageSize和pageNum為請求參數(shù),表示頁長和頁號。
返回結(jié)果示例:
{ "status": "success", "totalNum": 304, "data": [ { "id": 6, "name": "測試用戶6" }, { "id": 7, "name": "測試用戶7" }, { "id": 8, "name": "測試用戶8" }, { "id": 9, "name": "測試用戶9" }, { "id": 10, "name": "測試用戶10" } ] }
其中data為返回的數(shù)據(jù)存儲路徑,讀取到的數(shù)據(jù)有2個字段:
id
、name
。接口測試工具調(diào)用示例:
準備工作:創(chuàng)建MaxCompute分區(qū)表
本實踐將從接口處讀取的數(shù)據(jù)同步至MaxCompute分區(qū)表中,因此首先需要創(chuàng)建一張用于存儲同步過來的數(shù)據(jù)的分區(qū)表。
分區(qū)表配合覆蓋寫命令,可以實現(xiàn)分區(qū)覆蓋寫的效果,讓數(shù)據(jù)同步任務(wù)具備可重跑性,重跑時數(shù)據(jù)不會重復,并且在進一步做數(shù)據(jù)分析時,分區(qū)表也更易于數(shù)據(jù)分析。
建表語句如下。
CREATE TABLE IF NOT EXISTS ods_xiaobo_rest1
(
`id` BIGINT
,`name` STRING
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 3650;
如果您使用的是標準版的DataWorks,并將創(chuàng)建的分區(qū)表提交到生產(chǎn)環(huán)境,后續(xù)您可以在數(shù)據(jù)地圖中查看到創(chuàng)建的此表。
配置同步任務(wù)
添加RestAPI數(shù)據(jù)源。
在DataWorks的工作空間中添加一個RestAPI類型的數(shù)據(jù)源,操作詳情請參見配置RestAPI數(shù)據(jù)源。核心配置要點如下。
url:配置為RESTful接口的地址。
驗證方法:您可以根據(jù)數(shù)據(jù)源API實際支持的驗證方式選擇對應(yīng)的驗證方式并配置驗證參數(shù)。
資源組連通性:RestAPI數(shù)據(jù)源僅支持使用獨享數(shù)據(jù)集成資源組,您需要選擇一個獨享數(shù)據(jù)集成資源組,測試數(shù)據(jù)源與此資源組的連通性。
創(chuàng)建離線同步節(jié)點并配置同步任務(wù)。
在DataWorks的DataStudio中創(chuàng)建一個離線同步節(jié)點,操作詳情請參見通過向?qū)J脚渲秒x線同步任務(wù),其中核心配置要點如下。
數(shù)據(jù)來源配置要點:
數(shù)據(jù)源:選擇上述步驟中創(chuàng)建的RestAPI數(shù)據(jù)源。
請求Method:本示例接口為GET接口,此處選擇GET。
返回數(shù)據(jù)結(jié)構(gòu):本示例接口的返回結(jié)果為一個JSON數(shù)組,此處選擇數(shù)組數(shù)據(jù)。
數(shù)據(jù)存儲json路徑:本示例接口獲取的數(shù)據(jù)存儲于data下,此處配置為data。
請求參數(shù):頁長固定,此處配置為
pageSize=50
,建議不要單頁特別大,會給RestAPI服務(wù)端和同步任務(wù)帶來壓力。請求次數(shù):本示例選擇多次請求。
本接口的分頁參數(shù)是pageNum,選擇多次請求后,下方的相關(guān)參數(shù)配置為:
多次請求對應(yīng)參數(shù):配置為pageNum。
StartIndex:配置為1。
Step:配置為1。
EndIndex:配置為100。
數(shù)據(jù)去向配置要點:
數(shù)據(jù)源、表:選擇上述步驟中創(chuàng)建的MaxCompute分區(qū)表。
分區(qū)信息:分區(qū)信息和調(diào)度參數(shù)搭配使用。
分區(qū)信息配置為
${bizdate}
。后續(xù)調(diào)度配置的調(diào)度參數(shù)中,新增1個調(diào)度參數(shù):
bizdate=$bizdate
。
假設(shè)運行日期為2023-01-05,則分區(qū)信息的取值為20230104。
字段映射配置要點:根據(jù)接口中的數(shù)據(jù)定義,填寫RestAPI接口中的字段,注意字段名為大小寫敏感。添加好字段后,可以使用同名映射或者手動連線的方式,建立列映射。
測試運行
本實踐使用了調(diào)度參數(shù),因此完成離線同步任務(wù)的配置后,您可以在離線同步節(jié)點頁面頂部單擊帶參運行,根據(jù)界面提示填寫測試的調(diào)度參數(shù)取值,進行離線同步任務(wù)測試。測試運行完成后,您可以在界面下方查看運行日程,檢查調(diào)度參數(shù)取值是否符合預期。
數(shù)據(jù)檢查
您可以在DataStudio的臨時查詢中查看數(shù)據(jù)是否正確同步到了MaxCompute,臨時查詢的示例語句如下。
select * from ods_xiaobo_rest1 where ds='20230104' order by id;
其中ods_xiaobo_rest1為上述步驟中創(chuàng)建的MaxCompute分區(qū)表,20230104為測試運行時的分區(qū)取值。
運行完成后,您可以在下方的查詢結(jié)果處查看數(shù)據(jù)是否正確同步到了MaxCompute。
實踐3:讀取一個接口數(shù)據(jù),該接口為POST類型的RestAPI接口
示例場景:接口定義
本實踐示例的場景為讀取一個RESTful接口數(shù)據(jù)并寫入一個MaxCompute分區(qū)表中,其中使用的示例RESTful接口為一個自建的測試POST接口,本示例的接口詳情如下。
您實際操作時,可根據(jù)您使用的接口調(diào)整相關(guān)配置,本示例的接口僅作為本實踐的示例,為您演示實踐的操作流程。
接口請求示例:
http://TestAPIAddress:Port/rest/test3
requestBody的格式為JSON。
{ "userId":16, "startTime":"2023-01-04 00:00:00", "endTime":"2023-01-04 23:59:59" }
返回結(jié)果示例:
{ "status": "success", "totalNum": 289, "data": [ { "user": { "id": 16, "name": "用戶16" }, "axis": "series1", "value": 8231053, "createTime": "2023-01-04 00:04:57" }, { "user": { "id": 16, "name": "用戶16" }, "axis": "series1", "value": 6519928, "createTime": "2023-01-04 00:09:51" }, { "user": { "id": 16, "name": "用戶16" }, "axis": "series1", "value": 2915920, "createTime": "2023-01-04 00:14:36" }, { "user": { "id": 16, "name": "用戶16" }, "axis": "series1", "value": 7971851, "createTime": "2023-01-04 00:19:51" }, { "user": { "id": 16, "name": "用戶16" }, "axis": "series1", "value": 6598996, "createTime": "2023-01-04 00:24:30" } ] }
其中data為返回的數(shù)據(jù)存儲路徑,讀取到的數(shù)據(jù)有5個字段:
user.id
、user.name
、axis
、value
、createTime
。接口測試工具調(diào)用示例:
準備工作:創(chuàng)建MaxCompute分區(qū)表
本實踐將從接口處讀取的數(shù)據(jù)同步至MaxCompute分區(qū)表中,因此首先需要創(chuàng)建一張用于存儲同步過來的數(shù)據(jù)的分區(qū)表。
分區(qū)表配合覆蓋寫命令,可以實現(xiàn)分區(qū)覆蓋寫的效果,讓數(shù)據(jù)同步任務(wù)具備可重跑性,重跑時數(shù)據(jù)不會重復,并且在進一步做數(shù)據(jù)分析時,分區(qū)表也更易于數(shù)據(jù)分析。
建表語句如下。
CREATE TABLE IF NOT EXISTS ods_xiaobo_rest3
(
`user_id` BIGINT
,`name` STRING
,`axis` STRING
,`value` BIGINT
,`create_time` STRING
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 3650;
如果您使用的是標準版的DataWorks,并將創(chuàng)建的分區(qū)表提交到生產(chǎn)環(huán)境,后續(xù)您可以在數(shù)據(jù)地圖中查看到創(chuàng)建的此表。
配置同步任務(wù)
添加RestAPI數(shù)據(jù)源。
在DataWorks的工作空間中添加一個RestAPI類型的數(shù)據(jù)源,操作詳情請參見配置RestAPI數(shù)據(jù)源。核心配置要點如下。
url:配置為RESTful接口的地址。
驗證方法:您可以根據(jù)數(shù)據(jù)源API實際支持的驗證方式選擇對應(yīng)的驗證方式并配置驗證參數(shù)。
資源組連通性:RestAPI數(shù)據(jù)源僅支持使用獨享數(shù)據(jù)集成資源組,您需要選擇一個獨享數(shù)據(jù)集成資源組,測試數(shù)據(jù)源與此資源組的連通性。
創(chuàng)建離線同步節(jié)點并配置同步任務(wù)。
在DataWorks的DataStudio中創(chuàng)建一個離線同步節(jié)點,操作詳情請參見通過向?qū)J脚渲秒x線同步任務(wù),其中核心配置要點如下。
數(shù)據(jù)來源配置要點:
數(shù)據(jù)源:選擇上述步驟中創(chuàng)建的RestAPI數(shù)據(jù)源。
請求Method:本示例接口為POST接口,此處選擇POST。
返回數(shù)據(jù)結(jié)構(gòu):本示例接口的返回結(jié)果為一個JSON數(shù)組,此處選擇數(shù)組數(shù)據(jù)。
數(shù)據(jù)存儲json路徑:本示例接口獲取的數(shù)據(jù)存儲于data下,此處配置為data。
Header:本示例的POST接口接受的請求體是JSON格式的,此處配置為
{"Content-Type":"application/json"}
。請求參數(shù):請求參數(shù)與調(diào)度參數(shù)搭配使用,實現(xiàn)每天同步當天數(shù)據(jù)的。
請求參數(shù)配置為
{ "userId":16, "startTime":"${extract_day} 00:00:00", "endTime":"${extract_day} 23:59:59" }
后續(xù)調(diào)度配置的調(diào)度參數(shù)中,新增1個調(diào)度參數(shù):
extract_day=${yyyy-mm-dd}
。
數(shù)據(jù)去向配置要點:
數(shù)據(jù)源、表:選擇上述步驟中創(chuàng)建的MaxCompute分區(qū)表。
分區(qū)信息:分區(qū)信息和調(diào)度參數(shù)搭配使用。
分區(qū)信息配置為
${bizdate}
。后續(xù)調(diào)度配置的調(diào)度參數(shù)中,新增1個調(diào)度參數(shù):
bizdate=$bizdate
。
假設(shè)運行日期為2023-01-05,則分區(qū)信息的取值為20230104。
字段映射配置要點:根據(jù)接口中的數(shù)據(jù)定義,填寫RestAPI接口中的字段,多個字段可以使用英文點號分隔,注意字段名為大小寫敏感。添加好字段后,可以使用同名映射或者手動連線的方式,建立列映射。
測試運行
本實踐使用了調(diào)度參數(shù),因此完成離線同步任務(wù)的配置后,您可以在離線同步節(jié)點頁面頂部單擊帶參運行,根據(jù)界面提示填寫測試的調(diào)度參數(shù)取值,進行離線同步任務(wù)測試。測試運行完成后,您可以在界面下方查看運行日程,檢查調(diào)度參數(shù)取值是否符合預期。
數(shù)據(jù)檢查
您可以在DataStudio的臨時查詢中查看數(shù)據(jù)是否正確同步到了MaxCompute,臨時查詢的示例語句如下。
select * from ods_xiaobo_rest3 where ds='20230105' order by create_time;
其中ods_xiaobo_rest3為上述步驟中創(chuàng)建的MaxCompute分區(qū)表,20230105為測試運行時的分區(qū)取值。
運行完成后,您可以在下方的查詢結(jié)果處查看數(shù)據(jù)是否正確同步到了MaxCompute。
實踐4:循環(huán)某請求參數(shù)讀取RestAPI接口
示例場景:接口定義
本實踐示例的場景為循環(huán)讀取RESTful接口數(shù)據(jù)并寫入一個MaxCompute分區(qū)表中,其中使用的示例RESTful接口為一個自建的測試GET接口,會根據(jù)日期(date)、省份(province)、城市(city)入?yún)⒎祷叵嚓P(guān)的溫度數(shù)據(jù)。
您實際操作時,可根據(jù)您使用的接口調(diào)整相關(guān)配置,本示例的接口僅作為本實踐的示例,為您演示實踐的操作流程。
請求示例:
http://TestAPIAddress:Port/rest/test5?date=2023-01-04&province=zhejiang&city=hangzhou
返回示例:
{ "province": "P1", "city": "hz", "date": "2023-01-04", "minTemperature": "-14", "maxTemperature": "-7", "unit": "℃", "weather": "cool" }
接口測試工具調(diào)用示例:
準備工作:創(chuàng)建參數(shù)表和MaxCompute分區(qū)表
本實踐將從接口處讀取的數(shù)據(jù)同步至MaxCompute分區(qū)表中,因此首先需要創(chuàng)建一張參數(shù)表,用于存儲需要循環(huán)的province、city,再創(chuàng)建一張用于存儲同步過來的數(shù)據(jù)的分區(qū)表。
分區(qū)表配合覆蓋寫命令,可以實現(xiàn)分區(qū)覆蓋寫的效果,讓數(shù)據(jù)同步任務(wù)具備可重跑性,重跑時數(shù)據(jù)不會重復,并且在進一步做數(shù)據(jù)分析時,分區(qū)表也更易于數(shù)據(jù)分析。
建表語句如下:
創(chuàng)建參數(shù)表
CREATE TABLE IF NOT EXISTS `citys`
(
`province` STRING ,
`city` STRING
);
insert into citys
select 'shanghai','shanghai'
union all select 'zhejiang','hangzhou'
union all select 'sichuan','chengdu';
創(chuàng)建MaxCompute分區(qū)表
CREATE TABLE IF NOT EXISTS ods_xiaobo_rest5
(
`minTemperature` STRING ,
`maxTemperature` STRING ,
`unit` STRING ,
`weather` STRING
)
PARTITIONED BY
(
`province` STRING ,
`city` STRING ,
`ds` STRING
)
LIFECYCLE 3650;
如果您使用的是標準版的DataWorks,并將創(chuàng)建的表提交到生產(chǎn)環(huán)境,后續(xù)您可以在數(shù)據(jù)地圖中查看到創(chuàng)建的此表。
配置同步任務(wù)
添加RestAPI數(shù)據(jù)源。
在DataWorks的工作空間中添加一個RestAPI類型的數(shù)據(jù)源,操作詳情請參見配置RestAPI數(shù)據(jù)源。核心配置要點如下:
url:配置為RESTful接口的地址。
驗證方法:您可以根據(jù)數(shù)據(jù)源API實際支持的驗證方式選擇對應(yīng)的驗證方式并配置驗證參數(shù)。
資源組連通性:選擇指定的資源組,并進行連通性測試。
在數(shù)據(jù)開發(fā)中創(chuàng)建賦值節(jié)點setval_citys。具體操作,請參見賦值節(jié)點。
核心配置要點如下:
序號
說明
①
賦值語言:ODPS SQL
賦值代碼:
SELECT province ,city FROM citys;
②
重跑屬性:配置為運行成功或失敗后皆可重跑。
配置完成后提交發(fā)布賦值節(jié)點。
在數(shù)據(jù)開發(fā)中創(chuàng)建for-each節(jié)點。具體操作,請參見for-each節(jié)點。核心配置要點如下:
序號
說明
①
重跑屬性:配置為運行成功或失敗后皆可重跑。
②
依賴的上游節(jié)點:選擇前面步驟的節(jié)點,即setval_citys節(jié)點。
③
節(jié)點上下文參數(shù):選擇輸入?yún)?shù)的來源。
④
離線同步節(jié)點:配置for-each內(nèi)部離線同步節(jié)點,詳情請參見下面步驟。
創(chuàng)建離線同步節(jié)點并配置同步任務(wù)。具體操作,請參見通過向?qū)J脚渲秒x線同步任務(wù)。
核心配置要點如下:
序號
說明
①
調(diào)度參數(shù)配置如下:
bizdate=$[yyyymmdd-1] bizdate_year=$[yyyy-1] bizdate_month=$[mm-1] bizdate_day=$[dd-1]
②
配置RestAPI請求參數(shù)。其中province、city參數(shù)來自循環(huán)節(jié)點。
date=${bizdate_year}-${bizdate_month}-${bizdate_day}&province=${dag.foreach.current[0]}&city=${dag.foreach.current[1]}
③
配置MaxCompute分區(qū)參數(shù),其中province參數(shù)來自循環(huán)節(jié)點。
province=${dag.foreach.current[0]}
④
配置MaxCompute分區(qū)參數(shù),其中city參數(shù)來自循環(huán)節(jié)點。
city=${dag.foreach.current[1]}
⑤
配置MaxCompute分區(qū)參數(shù),其中ds參數(shù)來自調(diào)度參數(shù)。
ds=${bizdate}
⑥
根據(jù)接口中的數(shù)據(jù)定義,填寫RestAPI中的字段,注意字段名為大小寫敏感。添加好字段后,可以使用同名映射或者手動連線的方式,建立列映射。
配置完成后提交發(fā)布for-each節(jié)點。
測試運行
在成功提交發(fā)布賦值節(jié)點和for-each節(jié)點后,在運維中心的周期任務(wù)中,對賦值節(jié)點進行補數(shù)據(jù)操作。具體操作,請參見執(zhí)行補數(shù)據(jù)并查看補數(shù)據(jù)實例。
選擇補數(shù)據(jù)的業(yè)務(wù)日期,選中運行的節(jié)點。
任務(wù)運行后,在運行日志中查看調(diào)度參數(shù)渲染是否符合預期。
如圖中所示,調(diào)度參數(shù)渲染正確,數(shù)據(jù)將被寫入MaxCompute表的
province=shanghai,city=shanghai,ds=20231215
分區(qū)中。
數(shù)據(jù)檢查
您可以在數(shù)據(jù)開發(fā)的臨時查詢功能中查看數(shù)據(jù)是否正確同步到了MaxCompute,臨時查詢的示例如下:
示例中ods_xiaobo_rest5為上述準備工作中創(chuàng)建的MaxCompute分區(qū)表。
SELECT weather
,mintemperature
,maxtemperature
,unit
,province
,city
,ds
FROM ods_xiaobo_rest5
WHERE ds != 1
ORDER BY ds,province,city;
運行完成后,查看數(shù)據(jù)是否正確同步到MaxCompute中。