DataWorks Data Integration を使用すると、OSS から MaxCompute へ JSON データを移行できます。移行後は、組み込みの文字列関数 GET_JSON_OBJECT を使用して JSON データから情報を抽出できます。
前提条件
-
DataWorks にワークフローが作成済みであること。本例では基本モードのワークスペースを使用します。詳細については、「ワークフローの作成」をご参照ください。
-
.txt拡張子を持つ JSON ファイルが OSS にアップロード済みであること。本例では、OSS バケットは中国 (上海) リージョンにあります。サンプルファイル:{ "store": { "book": [ { "category": "reference", "author": "Nigel Rees", "title": "Sayings of the Century", "price": 8.95 }, { "category": "fiction", "author": "Evelyn Waugh", "title": "Sword of Honour", "price": 12.99 }, { "category": "fiction", "author": "J. R. R. Tolkien", "title": "The Lord of the Rings", "isbn": "0-395-19395-8", "price": 22.99 } ], "bicycle": { "color": "red", "price": 19.95 } }, "expensive": 10 }
JSON データの移行
-
OSS データソースを追加します。詳細については、「OSS データソースの構成」をご参照ください。
-
移行した JSON データを格納するためのテーブルを DataWorks に作成します。
-
DataWorks コンソールにログインします。対象リージョンで、左側のナビゲーションウィンドウから をクリックします。ドロップダウンリストからワークスペースを選択し、移動 データ開発 をクリックします。
-
データソース をクリックして データソース ページに移動し、データソースの新規作成 をクリックして MaxCompute プロジェクトを追加します。
-
Add Data Source and Bind to Data Development をクリックしてバインドを完了します。
-
データ開発 ページで、
アイコンにポインターを合わせ、テーブルの作成 > テーブル の順に選択します。 -
テーブルの作成 ダイアログボックスで、パス を選択し、名前 を入力して、作成 をクリックします。
説明複数のインスタンスがバインドされている場合は、MaxCompute エンジンインスタンスを選択する必要があります。
テーブル編集ページで、DDL Statement をクリックします。
-
DDL モード ダイアログボックスで、次の文を入力し、テーブルスキーマの生成 をクリックします。
create table mqdata (mq_data string); -
操作の確認 ダイアログボックスで、確認 をクリックします。
-
テーブルスキーマが生成されたら、基本プロパティ セクションでテーブルの 中国語名 を入力し、開発環境へのコミット および 本番環境へのコミット をクリックします。
説明基本モードのワークスペースを使用している場合は、本番環境へのコミット のみをクリックする必要があります。
-
-
バッチ同期ノードを作成します。
データ分析ページに移動します。対象のワークフローを右クリックし、 の順に選択します。
Create Node ダイアログボックスで、Name を入力し、Confirm をクリックします。
上部のナビゲーションバーで、
アイコンを選択します。スクリプトモードで、
アイコンをクリックします。import Template ダイアログボックスで、SOURCE type、data source、target type、および data source を指定し、confirm をクリックします。
-
JSON 構成を変更し、
ボタンをクリックします。構成例:
{ "type": "job", "steps": [ { "stepType": "oss", "parameter": { "fieldDelimiterOrigin": "^", "nullFormat": "", "compress": "", "datasource": "OSS_userlog", "column": [ { "name": 0, "type": "string", "index": 0 } ], "skipHeader": "false", "encoding": "UTF-8", "fieldDelimiter": "^", "fileFormat": "binary", "object": [ "applog.txt" ] }, "name": "Reader", "category": "reader" }, { "stepType": "odps", "parameter": { "partition": "", "isCompress": false, "truncate": true, "datasource": "odps_first", "column": [ "mqdata" ], "emptyAsNull": false, "table": "mqdata" }, "name": "Writer", "category": "writer" } ], "version": "2.0", "order": { "hops": [ { "from": "Reader", "to": "Writer" } ] }, "setting": { "errorLimit": { "record": "" }, "speed": { "concurrent": 2, "throttle": false } } }
結果の確認
ODPS SQL ノードを作成します。
ワークフローを右クリックし、 の順に選択します。
create a function ダイアログボックスで、function name を入力し、submit をクリックします。
-
ODPS SQL ノード構成タブで、次の文を入力します。
-- Query data in the mqdata table. SELECT * from mqdata; -- Get the value of the 'expensive' field from the JSON data. SELECT GET_JSON_OBJECT(mqdata.mq_data,'$.expensive') FROM mqdata;
アイコンをクリックしてコードを実行します。operation Log で結果を確認できます。