日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

文檔

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ù)。

  • Basic Auth:基礎(chǔ)驗證。

    如果數(shù)據(jù)源API支持用戶名和密碼的方式進行驗證,您可選擇此種驗證方式,并在選擇完成后配置用于驗證的用戶名和密碼,后續(xù)數(shù)據(jù)集成過程中對接數(shù)據(jù)源時,通過Basic Auth協(xié)議傳遞給RESTful地址,完成驗證。

  • Token Auth:Token驗證。

    如果數(shù)據(jù)源API支持Token的方式進行驗證,您可選擇此種驗證方式,并在選擇完成后配置用于驗證的固定Token值,后續(xù)數(shù)據(jù)集成過程中對接數(shù)據(jù)源時,通過傳入header中進行驗證,例如:{"Authorization":"Bearer TokenXXXXXX"}。

  • Aliyun API Signature:阿里云API簽名驗證。

    如果數(shù)據(jù)源為阿里云產(chǎn)品,且此阿里云產(chǎn)品的API支持通過AccessKey和AccessSecret的方式進行驗證,您可選擇此種種驗證方式,并在選擇完成后配置用于驗證的AccessKey和AccessSecret。

實踐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個字段:axisvaluecreateTime

  • 接口測試工具調(diào)用示例:apirest2

準備工作:創(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ù)

  1. 添加RestAPI數(shù)據(jù)源。

    在DataWorks的工作空間中添加一個RestAPI類型的數(shù)據(jù)源,操作詳情請參見配置RestAPI數(shù)據(jù)源image.png核心配置要點如下。

    • url:配置為RESTful接口的地址。

    • 驗證方法:您可以根據(jù)數(shù)據(jù)源API實際支持的驗證方式選擇對應(yīng)的驗證方式并配置驗證參數(shù)。

    • 資源組連通性:RestAPI數(shù)據(jù)源僅支持使用獨享數(shù)據(jù)集成資源組,您需要選擇一個獨享數(shù)據(jù)集成資源組,測試數(shù)據(jù)源與此資源組的連通性。

  2. 創(chuàng)建離線同步節(jié)點并配置同步任務(wù)。

    在DataWorks的DataStudio中創(chuàng)建一個離線同步節(jié)點,操作詳情請參見通過向?qū)J脚渲秒x線同步任務(wù),其中核心配置要點如下。restapi2mc配置同步任務(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:00end_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。結(jié)果1

提交發(fā)布與補數(shù)據(jù)

測試運行與數(shù)據(jù)檢查完成后,您可將離線同步任務(wù)提交發(fā)布到生產(chǎn)環(huán)境,操作詳情請參見標準模式工作空間任務(wù)發(fā)布流程提交發(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個字段:idname

  • 接口測試工具調(diào)用示例:apirest1

準備工作:創(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ù)

  1. 添加RestAPI數(shù)據(jù)源。

    在DataWorks的工作空間中添加一個RestAPI類型的數(shù)據(jù)源,操作詳情請參見配置RestAPI數(shù)據(jù)源image.png核心配置要點如下。

    • url:配置為RESTful接口的地址。

    • 驗證方法:您可以根據(jù)數(shù)據(jù)源API實際支持的驗證方式選擇對應(yīng)的驗證方式并配置驗證參數(shù)。

    • 資源組連通性:RestAPI數(shù)據(jù)源僅支持使用獨享數(shù)據(jù)集成資源組,您需要選擇一個獨享數(shù)據(jù)集成資源組,測試數(shù)據(jù)源與此資源組的連通性。

  2. 創(chuàng)建離線同步節(jié)點并配置同步任務(wù)。

    在DataWorks的DataStudio中創(chuàng)建一個離線同步節(jié)點,操作詳情請參見通過向?qū)J脚渲秒x線同步任務(wù),其中核心配置要點如下。實踐2

    • 數(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。結(jié)果1

實踐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.iduser.nameaxisvaluecreateTime

  • 接口測試工具調(diào)用示例:apirest3

準備工作:創(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ù)

  1. 添加RestAPI數(shù)據(jù)源。

    在DataWorks的工作空間中添加一個RestAPI類型的數(shù)據(jù)源,操作詳情請參見配置RestAPI數(shù)據(jù)源image.png核心配置要點如下。

    • url:配置為RESTful接口的地址。

    • 驗證方法:您可以根據(jù)數(shù)據(jù)源API實際支持的驗證方式選擇對應(yīng)的驗證方式并配置驗證參數(shù)。

    • 資源組連通性:RestAPI數(shù)據(jù)源僅支持使用獨享數(shù)據(jù)集成資源組,您需要選擇一個獨享數(shù)據(jù)集成資源組,測試數(shù)據(jù)源與此資源組的連通性。

  2. 創(chuàng)建離線同步節(jié)點并配置同步任務(wù)。

    在DataWorks的DataStudio中創(chuàng)建一個離線同步節(jié)點,操作詳情請參見通過向?qū)J脚渲秒x線同步任務(wù),其中核心配置要點如下。實踐3

    • 數(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。結(jié)果3

實踐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)用示例:image.png

準備工作:創(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ù)

  1. 添加RestAPI數(shù)據(jù)源。

    在DataWorks的工作空間中添加一個RestAPI類型的數(shù)據(jù)源,操作詳情請參見配置RestAPI數(shù)據(jù)源image.png核心配置要點如下:

    • url:配置為RESTful接口的地址。

    • 驗證方法:您可以根據(jù)數(shù)據(jù)源API實際支持的驗證方式選擇對應(yīng)的驗證方式并配置驗證參數(shù)。

    • 資源組連通性:選擇指定的資源組,并進行連通性測試。

  2. 數(shù)據(jù)開發(fā)中創(chuàng)建賦值節(jié)點setval_citys。具體操作,請參見賦值節(jié)點image.png

    核心配置要點如下:

    序號

    說明

    • 賦值語言:ODPS SQL

    • 賦值代碼:

      SELECT  province
              ,city
      FROM    citys;

    重跑屬性:配置為運行成功或失敗后皆可重跑

    配置完成后提交發(fā)布賦值節(jié)點。

  3. 數(shù)據(jù)開發(fā)中創(chuàng)建for-each節(jié)點。具體操作,請參見for-each節(jié)點image.png核心配置要點如下:

    序號

    說明

    重跑屬性:配置為運行成功或失敗后皆可重跑

    依賴的上游節(jié)點:選擇前面步驟的節(jié)點,即setval_citys節(jié)點。

    節(jié)點上下文參數(shù):選擇輸入?yún)?shù)的來源。

    離線同步節(jié)點:配置for-each內(nèi)部離線同步節(jié)點,詳情請參見下面步驟。

  4. 創(chuàng)建離線同步節(jié)點并配置同步任務(wù)。具體操作,請參見通過向?qū)J脚渲秒x線同步任務(wù)image.png

    核心配置要點如下:

    序號

    說明

    調(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é)點。

測試運行

  1. 在成功提交發(fā)布賦值節(jié)點和for-each節(jié)點后,在運維中心的周期任務(wù)中,對賦值節(jié)點進行補數(shù)據(jù)操作。具體操作,請參見執(zhí)行補數(shù)據(jù)并查看補數(shù)據(jù)實例image.png

  1. 選擇補數(shù)據(jù)的業(yè)務(wù)日期,選中運行的節(jié)點。image.png

  2. 任務(wù)運行后,在運行日志中查看調(diào)度參數(shù)渲染是否符合預期。image.png

    如圖中所示,調(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中。image.png