DataWorks は、RESTful API からデータを読み取るための RestAPI Reader を提供しています。 RestAPI Reader の HTTP リクエスト URL を設定することで、RestAPI データソースからデータを読み取り、データを Data Integration でサポートされているデータ型に変換し、変換されたデータをライターに転送することができます。 例えば、RestAPI Reader を使用して、指定された期間内のデータの読み取り、ページングされたデータの読み取り、またはループ内のリクエストパラメータのトラバースによる必要なデータの読み取りを行うことができます。 このトピックでは、RestAPI データソースの一般的な使用例を紹介します。
このトピックでは、RestAPI Reader を使用してデータを読み取る方法について説明します。 このトピックの例のパラメータ設定については、RestAPI Reader のコードのパラメータをご参照ください。
RestAPI Writer のスクリプトを設定する方法については、RestAPI Writer のコードとRestAPI Writer のコードのパラメータをご参照ください。
背景情報
RestAPI Reader は、データの読み取りと結果の返却に関して、以下の機能を提供します。
ディメンション | 機能 |
サポートされているレスポンス形式 | RestAPI Reader は、JSON 形式のレスポンスからのみデータを読み取ることができます。 |
サポートされているデータ型 | RestAPI Reader は、INT、BOOLEAN、DATE、DOUBLE、FLOAT、LONG、STRING データ型のデータを読み取ることができます。 |
リクエストメソッド | RestAPI Reader は、HTTP を介した GET または POST メソッドを使用して呼び出される RESTful API からデータを読み取ることができます。 |
認証方法 | RestAPI Reader では、認証を無効にするか、以下の認証方法のいずれかを使用できます:基本認証、トークンベース認証、Alibaba Cloud API 署名に基づく認証。 DataWorks に RestAPI データソースを追加する際に、データソースでサポートされている認証方法を選択し、必要な認証パラメータを設定できます。
|
例 1:指定された期間内のデータをクエリする RESTful API からデータを読み取る
サンプルシナリオ:RESTful API を定義する
このサンプルシナリオでは、RestAPI Reader を使用するバッチ同期タスクが、RESTful API から MaxCompute パーティションテーブルにデータを同期するように設定されています。 RESTful API は、リクエストメソッドが GET のセルフマネージド API です。 RESTful API は、API に設定されている期間関連のリクエストパラメータに基づいて、指定された期間内のデータを返します。 以下の説明は、RESTful API の詳細を提供します。
RestAPI Reader を使用して RESTful API からデータを読み取る場合は、使用する RESTful API に基づいて設定を調整できます。 この例で使用されている RESTful API は参考用です。
サンプルリクエスト
http://TestAPIAddress:Port/rest/test2?startTime=<StartTime>&endTime=<EndTime>startTime と endTime は、RESTful API のリクエストパラメータです。 これらのパラメータは、データをクエリする必要がある期間を指定します。
サンプルレスポンス
{ "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 パラメータは、クエリされたデータが格納されているパスを示します。 以下のフィールドが返されます:
axis、value、createTime。API テストツールを使用したサンプルコール

準備:MaxCompute パーティションテーブルを作成する
この例では、RESTful API から読み取られたデータを MaxCompute パーティションテーブルに書き込む必要があります。 同期されたデータを格納するために使用する MaxCompute パーティションテーブルを事前に作成する必要があります。
MaxCompute パーティションテーブルをデスティネーションテーブルとして使用し、関連するバッチ同期タスクの書き込みモードを上書きに設定すると、タスクが実行されるたびにテーブルのパーティション内の既存のデータが新しいデータで上書きされます。これにより、バッチ同期タスクを再実行できるようになります。 再実行プロセス中に、MaxCompute パーティションテーブル内のデータは重複せず、MaxCompute パーティションテーブルはデータ分析を容易にします。
以下のステートメントを実行して、MaxCompute パーティションテーブルを作成します。
CREATE TABLE IF NOT EXISTS ods_xiaobo_rest2
(
`axis` STRING
,`value` BIGINT
,`createTime` STRING
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 3650;標準モードのワークスペースを使用し、作成後に MaxCompute パーティションテーブルを本番環境にデプロイすると、データマップでテーブルを表示できます。
RestAPI データソースを追加し、バッチ同期タスクを設定する
RestAPI データソースを追加します。
使用するワークスペースに RestAPI データソースを追加します。 詳細については、RestAPI データソースを追加するをご参照ください。
以下の項目に注意する必要があります。[url]:RESTful API の URL を指定する必要があります。
[認証方法]:RestAPI データソースでサポートされている認証方法を選択し、必要な認証パラメータを設定できます。
[ネットワーク接続]:RestAPI データソースは、Data Integration 専用のリソースグループのみをサポートしています。 使用する Data Integration 専用のリソースグループを選択し、リソースグループと RestAPI データソース間のネットワーク接続をテストする必要があります。
バッチ同期タスクを作成および設定します。
DataWorks コンソールの DataStudio ページで、バッチ同期タスクを作成し、コードレスユーザーインターフェース(UI)を使用してタスクを設定します。 詳細については、コードレス UI を使用してバッチ同期タスクを設定するをご参照ください。 以下の項目に注意する必要があります。
[ソース]の主要な設定項目:
[データソース]:前の手順で追加した RestAPI データソースを選択する必要があります。
[リクエストメソッド]:この例では、RESTful API のリクエストメソッドは GET です。 リクエストメソッドを [GET] に設定する必要があります。
[データ構造]:この例では、RESTful API から返されるレスポンスは JSON 配列です。 データ構造パラメータを [配列データ] に設定する必要があります。
[データを格納する JSON パス]:この例では、RESTful API によってクエリされたフィールドは data パスに格納されます。 フィールドに [data] と入力する必要があります。
[リクエストパラメータ]:リクエストパラメータをスケジューリングパラメータと組み合わせて使用することで、バッチ同期タスクが毎日データを同期できるようにすることができます。
以下のリクエストパラメータを設定できます:
startTime=${extract_day} ${start_time}&endTime=${extract_day} ${end_time}。バッチ同期タスクのスケジューリングプロパティを設定する際には、以下のスケジューリングパラメータを追加します:
extract_day=${yyyy-mm-dd}、start_time=00:00:00、end_time=23:59:59。
例えば、バッチ同期タスクの実行がスケジュールされている日付が 2023-01-05 の場合、
extract_dayの値は 2023-01-04 です。 リクエストパラメータは、startTime=2023-01-04 00:00:00&endTime=2023-01-04 23:59:59の形式で連結されます。
[デスティネーション]の主要な設定項目:
[データソース] と [テーブル]:使用する MaxCompute データソースと、この例の準備で作成した MaxCompute パーティションテーブルを選択する必要があります。
[パーティション情報]:スケジューリングパラメータを使用して、MaxCompute パーティションテーブルにデータを書き込むパーティションを指定できます。
フィールドに
${bizdate}と入力できます。データ同期タスクのスケジューリングプロパティを設定する際には、スケジューリングパラメータ
bizdate=$bizdateを追加します。
例えば、バッチ同期タスクの実行がスケジュールされている日付が 2023-01-05 の場合、データが書き込まれるパーティションは日付 20230104 で表されます。
[フィールドマッピング]の主要な設定項目:バッチ同期タスクのフィールドマッピングを設定する際には、RESTful API のデータ定義に基づいて、RESTful API から返されるフィールドを指定する必要があります。 フィールド名は大文字と小文字が区別されます。 フィールドを指定した後、[同じ名前のフィールドをマッピング] をクリックして、ソースフィールドを同じ名前のデスティネーションフィールドにマッピングするか、手動で線をドラッグしてソースフィールドをデスティネーションフィールドにマッピングできます。
バッチ同期タスクをテストする
この例では、バッチ同期タスクのスケジューリングパラメータが設定されています。 バッチ同期タスクの設定が完了したら、タスクの設定タブの上部ツールバーにある [パラメータ付きで実行] アイコンをクリックして、タスクをテストできます。 アイコンをクリックした後、表示されるダイアログボックスでスケジューリングパラメータの値を指定する必要があります。
テストを実行した後、設定タブの下部に生成されたバッチ同期タスクの実行ログを表示して、スケジューリングパラメータの値がビジネス要件を満たしているかどうかを確認できます。
データが MaxCompute に同期されているかどうかを確認する
DataStudio ページの Ad Hoc Query ペインで ad hoc クエリノードを作成して、MaxCompute に同期されたデータをクエリできます。 サンプルクエリステートメント:
select * from ods_xiaobo_rest2 where ds='20230104' order by createtime;ods_xiaobo_rest2 は、この例の準備で作成された MaxCompute パーティションテーブルです。 20230104 は、前のテストで取得されたパーティションです。
クエリステートメントを実行した後、設定タブの下部にある結果タブで、データが MaxCompute に正常に同期されたかどうかを確認できます。
バッチ同期タスクをコミットおよびデプロイし、バッチ同期タスクのデータをバックフィルする
テストとデータチェックが完了したら、バッチ同期タスクを本番環境にコミットおよびデプロイできます。 標準モードのワークスペースでタスクをデプロイする方法については、標準モードのワークスペースにノードをデプロイするをご参照ください。
バッチ同期タスクが本番環境にデプロイされたら、運用センターのサイクルタスクページでタスクを見つけて、タスクの履歴データをバックフィルできます。 データバックフィル機能とタスクのデータをバックフィルする方法については、自動トリガータスクのデータをバックフィルし、タスクに対して生成されたデータバックフィルインスタンスを表示するをご参照ください。
例 2:RESTful API から返されるページングされた結果からデータを読み取る
サンプルシナリオ:RESTful API を定義する
このサンプルシナリオでは、RestAPI Reader を使用するバッチ同期タスクが、RESTful API から MaxCompute パーティションテーブルにデータを同期するように設定されています。 RESTful API は、リクエストメソッドが GET のセルフマネージド API です。 以下の説明は、RESTful API の詳細を提供します。
RestAPI Reader を使用して RESTful API からデータを読み取る場合は、使用する RESTful API に基づいて設定を調整できます。 この例で使用されている RESTful API は参考用です。
サンプルリクエスト
http://TestAPIAddress:Port/rest/test1?pageSize=5&pageNum=1pageSize と pageNum は、RESTful API のリクエストパラメータです。 pageSize は各ページで返されるエントリ数を指定します。 pageNum は返されるページの総数を指定します。
サンプルレスポンス
{ "status": "success", "totalNum": 304, "data": [ { "id": 6, "name": "User 6" }, { "id": 7, "name": "User 7" }, { "id": 8, "name": "User 8" }, { "id": 9, "name": "User 9" }, { "id": 10, "name": "User 10" } ] }レスポンスの data パラメータは、クエリされたデータが格納されているパスを示します。 以下のフィールドが返されます:
idとname。API テストツールを使用したサンプルコール

準備:MaxCompute パーティションテーブルを作成する
この例では、RESTful API から読み取られたデータを MaxCompute パーティションテーブルに書き込む必要があります。 同期されたデータを格納するために使用する MaxCompute パーティションテーブルを事前に作成する必要があります。
MaxCompute パーティションテーブルをデスティネーションテーブルとして使用し、関連するバッチ同期タスクの書き込みモードを上書きに設定すると、タスクが実行されるたびにテーブルのパーティション内の既存のデータが新しいデータで上書きされます。これにより、バッチ同期タスクを再実行できるようになります。 再実行プロセス中に、MaxCompute パーティションテーブル内のデータは重複せず、MaxCompute パーティションテーブルはデータ分析を容易にします。
以下のステートメントを実行して、MaxCompute パーティションテーブルを作成します。
CREATE TABLE IF NOT EXISTS ods_xiaobo_rest1
(
`id` BIGINT
,`name` STRING
)
PARTITIONED BY
(
ds STRING
)
LIFECYCLE 3650;標準モードのワークスペースを使用し、作成後に MaxCompute パーティションテーブルを本番環境にデプロイすると、データマップでテーブルを表示できます。
RestAPI データソースを追加し、バッチ同期タスクを設定する
RestAPI データソースを追加します。
使用するワークスペースに RestAPI データソースを追加します。 詳細については、RestAPI データソースを追加するをご参照ください。
以下の項目に注意する必要があります。[url]:RESTful API の URL を指定する必要があります。
[認証方法]:RestAPI データソースでサポートされている認証方法を選択し、必要な認証パラメータを設定できます。
[ネットワーク接続]:RestAPI データソースは、Data Integration 専用のリソースグループのみをサポートしています。 使用する Data Integration 専用のリソースグループを選択し、リソースグループと RestAPI データソース間のネットワーク接続をテストする必要があります。
バッチ同期タスクを作成および設定します。
DataWorks コンソールの DataStudio ページで、バッチ同期タスクを作成し、コードレス UI を使用してタスクを設定します。 詳細については、コードレス UI を使用してバッチ同期タスクを設定するをご参照ください。 以下の項目に注意する必要があります。
[ソース]の主要な設定項目:
[データソース]:前の手順で追加した RestAPI データソースを選択する必要があります。
[リクエストメソッド]:この例では、RESTful API のリクエストメソッドは GET です。 リクエストメソッドを [GET] に設定する必要があります。
[データ構造]:この例では、RESTful API から返されるレスポンスは JSON 配列です。 データ構造パラメータを [配列データ] に設定する必要があります。
[データを格納する JSON パス]:この例では、RESTful API によってクエリされたフィールドは data パスに格納されます。 フィールドに [data] と入力する必要があります。
[リクエストパラメータ]:この例では、
pageSize=50を設定して、各ページで返されるエントリ数を 50 に制限する必要があります。 pageSize パラメータに過度に大きな値を指定しないことをお勧めします。 そうしないと、RestAPI サーバー側とバッチ同期タスクの負荷が高くなる可能性があります。[リクエスト数]:この例では、[複数リクエスト] を選択する必要があります。
この例で使用されている RESTful API のページングパラメータは pageNum です。 [複数リクエスト] を選択した後、以下のパラメータを設定する必要があります。
[複数リクエストパラメータ]:pageNum と入力します。
[開始インデックス]:1 と入力します。
[ステップ]:1 と入力します。
[終了インデックス]:100 と入力します。
[デスティネーション]の主要な設定項目:
[データソース] と [テーブル]:使用する MaxCompute データソースと、この例の準備で作成した MaxCompute パーティションテーブルを選択する必要があります。
[パーティション情報]:スケジューリングパラメータを使用して、MaxCompute パーティションテーブルにデータを書き込むパーティションを指定できます。
フィールドに
${bizdate}と入力できます。データ同期タスクのスケジューリングプロパティを設定する際には、スケジューリングパラメータ
bizdate=$bizdateを追加します。
例えば、バッチ同期タスクの実行がスケジュールされている日付が 2023-01-05 の場合、データが書き込まれるパーティションは日付 20230104 で表されます。
[フィールドマッピング]の主要な設定項目:バッチ同期タスクのフィールドマッピングを設定する際には、RESTful API のデータ定義に基づいて、RESTful API から返されるフィールドを指定する必要があります。 フィールド名は大文字と小文字が区別されます。 フィールドを指定した後、[同じ名前のフィールドをマッピング] をクリックして、ソースフィールドを同じ名前のデスティネーションフィールドにマッピングするか、手動で線をドラッグしてソースフィールドをデスティネーションフィールドにマッピングできます。
バッチ同期タスクをテストする
この例では、バッチ同期タスクのスケジューリングパラメータが設定されています。 バッチ同期タスクの設定が完了したら、タスクの設定タブの上部ツールバーにある [パラメータ付きで実行] アイコンをクリックして、タスクをテストできます。 アイコンをクリックした後、表示されるダイアログボックスでスケジューリングパラメータの値を指定する必要があります。
テストを実行した後、設定タブの下部に生成されたバッチ同期タスクの実行ログを表示して、スケジューリングパラメータの値がビジネス要件を満たしているかどうかを確認できます。
データが MaxCompute に同期されているかどうかを確認する
DataStudio ページの Ad Hoc Query ペインで ad hoc クエリノードを作成して、MaxCompute に同期されたデータをクエリできます。 サンプルクエリステートメント:
select * from ods_xiaobo_rest1 where ds='20230104' order by id;ods_xiaobo_rest1 は、この例の準備で作成された MaxCompute パーティションテーブルです。 20230104 は、前のテストで取得されたパーティションです。
クエリステートメントを実行した後、設定タブの下部にある結果タブで、データが MaxCompute に正常に同期されたかどうかを確認できます。
例 3:リクエストメソッドが POST の RESTful API からデータを読み取る
サンプルシナリオ:RESTful API を定義する
このサンプルシナリオでは、RestAPI Reader を使用するバッチ同期タスクが RESTful API から MaxCompute パーティションテーブルにデータを同期するように構成されています。RESTful API は、リクエストメソッドが POST のセルフマネージド API です。RESTful API の詳細:
RestAPI Reader を使用して RESTful API からデータを読み取る場合は、使用する RESTful API に基づいて構成を調整できます。この例で使用されている RESTful API は参考用です。
サンプルリクエスト
http://TestAPIAddress:Port/rest/test3リクエストボディは JSON 形式です。
{ "userId":16, "startTime":"2023-01-04 00:00:00", "endTime":"2023-01-04 23:59:59" }サンプルレスポンス
{ "status": "success", "totalNum": 289, "data": [ { "user": { "id": 16, "name": "User 16" }, "axis": "series1", "value": 8231053, "createTime": "2023-01-04 00:04:57" }, { "user": { "id": 16, "name": "User 16" }, "axis": "series1", "value": 6519928, "createTime": "2023-01-04 00:09:51" }, { "user": { "id": 16, "name": "User 16" }, "axis": "series1", "value": 2915920, "createTime": "2023-01-04 00:14:36" }, { "user": { "id": 16, "name": "User 16" }, "axis": "series1", "value": 7971851, "createTime": "2023-01-04 00:19:51" }, { "user": { "id": 16, "name": "User 16" }, "axis": "series1", "value": 6598996, "createTime": "2023-01-04 00:24:30" } ] }レスポンスの data パラメータは、クエリされたデータが格納されているパスを示します。以下のフィールドが返されます:
user.id、user.name、axis、value、createTime。API テストツールを使用したサンプルコール

準備:MaxCompute パーティションテーブルを作成する
この例では、RESTful API から読み取られたデータを MaxCompute パーティションテーブルに書き込む必要があります。同期されたデータを格納するために使用する MaxCompute パーティションテーブルを事前に作成する必要があります。
MaxCompute パーティションテーブルをデスティネーションテーブルとして使用し、関連するバッチ同期タスクの書き込みモードを上書きに設定すると、タスクが実行されるたびにテーブルのパーティション内の既存のデータが新しいデータで上書きされます。これにより、バッチ同期タスクを再実行できるようになります。再実行プロセス中に、MaxCompute パーティションテーブル内のデータは重複せず、MaxCompute パーティションテーブルはデータ分析を容易にします。
以下のステートメントを実行して、MaxCompute パーティションテーブルを作成します。
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;標準モードのワークスペースを使用し、作成後に MaxCompute パーティションテーブルを本番環境にデプロイすると、データマップでテーブルを表示できます。
RestAPI データソースを追加し、バッチ同期タスクを設定する
RestAPI データソースを追加します。
使用するワークスペースに RestAPI データソースを追加します。 詳細については、RestAPI データソースを追加するをご参照ください。
以下の項目に注意する必要があります。[url]:RESTful API の URL を指定する必要があります。
[認証方法]:RestAPI データソースでサポートされている認証方法を選択し、必要な認証パラメータを設定できます。
[ネットワーク接続]:RestAPI データソースは、Data Integration 専用のリソースグループのみをサポートしています。使用する Data Integration 専用のリソースグループを選択し、リソースグループと RestAPI データソース間のネットワーク接続をテストする必要があります。
バッチ同期タスクを作成および設定します。
DataWorks コンソールの DataStudio ページで、バッチ同期タスクを作成し、コードレス UI を使用してタスクを設定します。 詳細については、コードレス UI を使用してバッチ同期タスクを設定するをご参照ください。 以下の項目に注意する必要があります。
[ソース] の主要な設定項目:
[データソース]:前の手順で追加した RestAPI データソースを選択する必要があります。
[リクエストメソッド]:この例では、RESTful API のリクエストメソッドは POST です。[POST] に設定する必要があります。
[データ構造]:この例では、RESTful API から返されるレスポンスは JSON 配列です。 データ構造パラメータを [配列データ] に設定する必要があります。
[データを格納する JSON パス]:この例では、RESTful API によってクエリされたフィールドは data パスに格納されます。 フィールドに [data] と入力する必要があります。
[ヘッダー]:この例で使用されている RESTful API のリクエストボディは JSON 形式です。この例では、フィールドに
{"Content-Type":"application/json"}と入力する必要があります。[リクエストパラメータ]:リクエストパラメータをスケジューリングパラメータと組み合わせて使用することで、バッチ同期タスクが毎日データを同期できるようにすることができます。
次のコードは、リクエストパラメータの構成の例を示しています。
{ "userId":16, "startTime":"${extract_day} 00:00:00", "endTime":"${extract_day} 23:59:59" }バッチ同期タスクのスケジューリングプロパティを設定する際には、スケジューリングパラメータ
extract_day=${yyyy-mm-dd}を追加します。
[デスティネーション] の主要な設定項目:
[データソース] と [テーブル]:使用する MaxCompute データソースと、この例の準備で作成した MaxCompute パーティションテーブルを選択する必要があります。
[パーティション情報]:スケジューリングパラメータを使用して、MaxCompute パーティションテーブルにデータを書き込むパーティションを指定できます。
フィールドに
${bizdate}と入力できます。データ同期タスクのスケジューリングプロパティを設定する際には、スケジューリングパラメータ
bizdate=$bizdateを追加します。
たとえば、バッチ同期タスクの実行がスケジュールされている日付が 2023-01-05 の場合、データが書き込まれるパーティションは日付 20230104 で表されます。
[フィールドマッピング] の主要な設定項目:バッチ同期タスクのフィールドマッピングを設定する際には、RESTful API のデータ定義に基づいて RESTful API から返されるフィールドを指定する必要があります。指定するフィールドがネストされたフィールドの場合は、フィールドを指定するときにフィールド名にピリオド(.)を使用できます。フィールド名は大文字と小文字が区別されます。フィールドを指定した後、[同じ名前のフィールドをマッピング] をクリックして、ソースフィールドと同じ名前のデスティネーションフィールドにマッピングするか、手動で線をドラッグしてソースフィールドをデスティネーションフィールドにマッピングできます。
バッチ同期タスクをテストする
この例では、バッチ同期タスクのスケジューリングパラメータが設定されています。バッチ同期タスクの構成が完了したら、タスクの構成タブの上部ツールバーにある [パラメータ付きで実行] アイコンをクリックしてタスクをテストできます。アイコンをクリックした後、表示されるダイアログボックスでスケジューリングパラメータの値を指定する必要があります。
テストを実行した後、構成タブの下部に生成されたバッチ同期タスクの実行ログを表示して、スケジューリングパラメータの値がビジネス要件を満たしているかどうかを確認できます。
データが MaxCompute に同期されているかどうかを確認する
DataStudio ページの Ad Hoc Query ペインで ad hoc クエリノードを作成して、MaxCompute に同期されたデータをクエリできます。サンプルクエリステートメント:
select * from ods_xiaobo_rest3 where ds='20230105' order by create_time;ods_xiaobo_rest3 は、この例の準備で作成された MaxCompute パーティションテーブルです。 20230105 は前のテストで取得されたパーティションです。
クエリステートメントを実行した後、構成タブの下部にある結果タブで、データが MaxCompute に正常に同期されたかどうかを確認できます。
例 4: RESTful API のリクエストパラメータをループでトラバースしてデータを読み取る
サンプルシナリオ:RESTful API を定義する
このサンプルシナリオでは、RestAPI Reader を使用するバッチ同期タスクが、RESTful API から MaxCompute パーティションテーブルに繰り返しデータを読み取るように構成されています。 RESTful API は、リクエストメソッドが GET のセルフマネージド API であり、日付、都道府県、市区町村のリクエストパラメータに基づいて気温に関連するデータを返します。
RestAPI Reader を使用して RESTful API からデータを読み取る場合は、使用する RESTful API に基づいて構成を調整できます。この例で使用されている RESTful API は参考用です。
サンプルリクエスト
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" }API テストツールを使用したサンプルコール

準備:パラメータテーブルと MaxCompute パーティションテーブルを作成する
この例では、RESTful API から読み取られたデータを MaxCompute パーティションテーブルに書き込む必要があります。事前にパラメータテーブルと MaxCompute パーティションテーブルを作成する必要があります。パラメータテーブルは、ループでトラバースする必要がある都道府県と市区町村のパラメータの値を格納するために使用されます。 MaxCompute パーティションテーブルは、同期されたデータを格納するために使用されます。
MaxCompute パーティションテーブルをデスティネーションテーブルとして使用し、関連するバッチ同期タスクの書き込みモードを上書きに設定すると、タスクが実行されるたびにテーブルのパーティション内の既存のデータが新しいデータで上書きされます。これにより、バッチ同期タスクを再実行できるようになります。再実行プロセス中に、MaxCompute パーティションテーブル内のデータは重複せず、MaxCompute パーティションテーブルはデータ分析を容易にします。
以下のステートメントを実行してテーブルを作成します。
パラメータテーブルを作成する
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';MaxCompute パーティションテーブルを作成する
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;標準モードのワークスペースを使用し、作成後に2つのテーブルを本番環境にコミットおよびデプロイすると、データマップでテーブルを表示できます。
RestAPI データソースを追加し、バッチ同期タスクを設定する
RestAPI データソースを追加します。
使用するワークスペースに RestAPI データソースを追加します。 詳細については、RestAPI データソースを追加するをご参照ください。
以下の項目に注意する必要があります。[url]:RESTful API の URL を指定する必要があります。
[認証方法]:RestAPI データソースでサポートされている認証方法を選択し、必要な認証パラメータを設定できます。
[ネットワーク接続]:使用するリソースグループを選択し、リソースグループと RestAPI データソース間のネットワーク接続をテストする必要があります。
[datastudio] ページで、setval_citys という名前の割り当てノードを作成および設定します。 詳細については、割り当てノードを構成するをご参照ください。
以下の項目に注意する必要があります。
番号
説明
1
プログラミング言語:ODPS SQL
値の割り当てコード:
SELECT province ,city FROM citys;
2
再実行プロパティ:再実行プロパティを [実行状態に関係なく許可] に設定します。
割り当てノードの構成が完了したら、ノードをコミットおよびデプロイします。
[datastudio] ページで for-each ノードを作成および構成します。 詳細については、for-each ノードを構成する ディレクトリのトピックをご参照ください。 以下の項目に注意する必要があります。
パラメータ
説明
再実行プロパティ
再実行プロパティを [実行状態に関係なく許可] に設定します。
祖先ノード
setval_citys 割り当てノードを選択します。
入力パラメータ
入力パラメータのソースを選択します。
バッチ同期タスク
次の手順を参照して、for-each ノード内にバッチ同期タスクを作成および構成します。
コードレス UI を使用してバッチ同期タスクを作成および構成します。 詳細については、コードレス UI を使用してバッチ同期タスクを構成するをご参照ください。
以下の項目に注意する必要があります。
パラメータ
説明
スケジューリングパラメータ
以下のスケジューリングパラメータを構成します。
bizdate=$[yyyymmdd-1] bizdate_year=$[yyyy-1] bizdate_month=$[mm-1] bizdate_day=$[dd-1]リクエストパラメータ
RESTful API のリクエストパラメータを構成します。都道府県と市区町村のパラメータは、for-each ノードの出力パラメータです。
date=${bizdate_year}-${bizdate_month}-${bizdate_day}&province=${dag.foreach.current[0]}&city=${dag.foreach.current[1]}都道府県パラメータ
都道府県パラメータを構成して、デスティネーション MaxCompute パーティションを指定します。都道府県パラメータは for-each ノードの出力パラメータです。
province=${dag.foreach.current[0]}市区町村パラメータ
市区町村パラメータを構成して、デスティネーション MaxCompute パーティションを指定します。市区町村パラメータは for-each ノードの出力パラメータです。
city=${dag.foreach.current[1]}ds パラメータ
ds パラメータを構成して、デスティネーション MaxCompute パーティションを指定します。 ds パラメータはスケジューリングパラメータです。
ds=${bizdate}フィールドマッピング
RESTful API のデータ定義に基づいて、RESTful API から返されるフィールドを指定します。フィールド名は大文字と小文字が区別されます。フィールドを指定した後、[同じ名前のフィールドをマッピング] をクリックして、ソースフィールドと同じ名前のデスティネーションフィールドにマッピングするか、手動で線をドラッグしてソースフィールドをデスティネーションフィールドにマッピングできます。
構成が完了したら、for-each ノードをコミットおよびデプロイします。
割り当てノードと for-each ノードをテストします。
割り当てノードと for-each ノードをコミットおよび デプロイ した後、運用センターのサイクルタスクページで割り当てノードを見つけ、割り当てノードのデータをバックフィルします。 詳細については、データのバックフィルとデータバックフィルインスタンスの表示(新バージョン)をご参照ください。
データタイムスタンプと、データをバックフィルするノードを選択します。データタイムスタンプには、開始時点と終了時点が含まれます。
ノードに対してデータバックフィルインスタンスが生成されたら、割り当てノードの実行ログでスケジューリングパラメータが正しくレンダリングされているかどうかを確認します。
前の図では、スケジューリングパラメータが正しくレンダリングされています。データは MaxCompute テーブルの
province=shanghai,city=shanghai,ds=20231215パーティションに書き込まれます。
データが MaxCompute に同期されているかどうかを確認する
DataStudio ページの Ad Hoc Query ペインで ad hoc クエリノードを作成して、MaxCompute に同期されたデータをクエリできます。
次のサンプルステートメントの ods_xiaobo_rest5 は、準備:MaxCompute パーティションテーブルを作成する サブセクションで作成された MaxCompute パーティションテーブルです。
SELECT weather
,mintemperature
,maxtemperature
,unit
,province
,city
,ds
FROM ods_xiaobo_rest5
WHERE ds != 1
ORDER BY ds,province,city;クエリステートメントを実行した後、構成タブの下部にある結果タブで、データが MaxCompute に正常に同期されたかどうかを確認できます。