このConnected Learning Pathでは、JSONデータセットをCSVに変換する方法を説明するChainを作成します。この例のデータセットでは、入れ子になったオブジェクトの配列がある。
この パスは、JSONデータの演習で学んだループの概念と、JSON Nested Objectsパスのデカルト結合の概念を強化するものです。これらのパスを修了していない場合は、このパスを修了する前に修了することを強く勧める。
主な学習目標 | JSONコネクターの機能 |
副次的学習目標 | 表形式変換アドバンスクエリーコマンド、反復、変数変換の威力 |
前提条件 | |
チェーン・テンプレート | CLP|ネストされたオブジェクトのJSON配列へのアクセス |
ステップ1:チェーンの作成
- 新しいチェーンを追加する
- チェーンに名前を付けるCLP|ネストされたオブジェクトのJSON配列にアクセスする
- チェーン変数の作成
- セーブ・ザ・チェーン
ステップ2:JSONデータの取得
HTTPコネクタを使用して、Webロケーションからドーナツ・データを取得する。このデータセットは、入れ子になったオブジェクト(属性)の配列(複数の項目)を持つ、より複雑なJSONデータセットの例を示している。
- HTTPコネクタからStartノードにGETコマンドを追加します。
- コマンドを以下のように設定する:
名称 | GET - すべてのデザート |
ユーザー名 | <空白のまま |
パスワード | <空白のまま |
CA証明書 | <空白のまま |
証明書 | <空白のまま |
証明書の秘密鍵 | <空白のまま |
ショー・レスポンス | チェック済み |
URL | cv-JSON-AllDonut チェーン変数 |
クエリー文字列 | <空白のまま |
コンテンツタイプ | application/json |
応答 | <空白のまま |
- コマンドを保存する
ステップ3:JSONをCSVに変換する
JSON コネクタを使用して、JSON 配列からキーを抽出し、異なるドーナツの品種を識別する。
参考までに、all-donuts JSONのスキーマを以下に示す:
スキーマ
[{"id":"0001","type":"donut","name":"Cake","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"},{"id":"1003","type":"Blueberry"},{"id":"1004","type":"Devil's Food"}]},"topping":[{"id":"5001","type":"None"},{"id":"5002","type":"Glazed"},{"id":"5005","type":"Sugar"},{"id":"5007","type":"粉砂糖"},{"id": "5006", "type": "スプリンクル入りチョコレート"},{"id":"5003","type":"Chocolate"},{"id":"5004","type":"Maple"}]},{"id":"0002","type":"donut","name":"Raised","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"Regular"}]},"topping":[{"id":"5001","type":"None"},{"id":"5002","type":"Glazed"},{"id":"5005","type":"Sugar"},{"id":"5003","type":"Chocolate"},{"id":"5004","type":"Maple"}]},{"id":"0003","type":"donut","name":"Old Fashioned","ppu":0.55,"batters":{"batter":[{"id":"1001","type":"Regular"},{"id":"1002","type":"Chocolate"}]},"topping":[{"id":"5001","type":"None"},{"id":"5002","type":"Glazed"},{"id":"5003","type":"Chocolate"},{"id":"5004","type":"Maple"}]}]
- Array to CSV Command fromJSON Connector をチェーンに追加。
- 開始ノード(GET - すべてのデザート)をArray to CSV コマンドに接続する。
- コマンド名を指定します:Array to CSV - Get Variety.
- JSON Data パラメータで、 GET - All Desserts CommandからのResponse Outputを選択する。
- Input Text 、Path to root 、Filter パラメータは空白のままにしておく。
- Multi-value Delimiter パラメータはカンマ(,)のままにしておく。
- プレビュー結果 オプションをチェックする。
- Column Name と.name JSONPath パラメーターにはvariety と入力する。
- Delimiter パラメータにPipe を選択する。
- コマンドを保存する
ステップ4:反復可能なデータセットの作成
前述のように、データセットは入れ子になったオブジェクトの配列(つまり複数の項目)を持っている。各品種を個別に処理するには、データセットに行番号を追加する必要がある。これらの行番号は、ネストされたオブジェクト(属性)が解析される配列項目(ドーナツ)を識別するために、以降のArray to CSVコマンドで使用されます。
チェインビルダーをよくご存知の方は、なぜ行番号の追加コマンドではなく、Advanced Queryを使うのか不思議に思われるかもしれません。行番号の追加コマンドは、1(1)からカウントを開始しますが、JSON配列はゼロベースなので、ゼロ(0)からカウントを開始する必要があります。
- Tabular Transformation Connector からAdvanced Query Command をチェーンに追加します。
- Array を CSV に接続 - Get Variety Command をAdvanced Query Command に接続。
- コマンドの名前を指定します:Advanced Query - Add Row Numbers.
- テーブル・セクションの設定
- File フィールドで、Converted File Output fromArray to CSV - Get Variety Command を指定します。
- Table Name パラメーターにvarieties と入力。指定されたクエリは、このテーブルに対して実行される。
- Queryパラメータに以下を入力する:
SELECT
ROW_NUMBER ( OVER (
ORDER BY variety
)-1 RowNum,
variety
FROM
varieties
- 入力デリミタ と出力デリミタ パラメータには、それぞれパイプ とカンマを指定する。
- プレビュー結果 パラメータをチェックする。
- コマンドを保存する。
ステップ5:JSON配列の作成
JSONコネクタからCSV to JSONコマンドを使用して、一意の品種リストをJSON配列に変換します。コマンドグループは、この配列の各項目を繰り返し処理することができる。
- JSON コネクタ からCSV to JSON コマンドをチェーンに追加する。
- Advanced Query - Add Row Numbers Command をCSV to JSON Command に接続します。
- コマンドの設定は以下のように行う:
名称 | CSVからJSONへ - 品種 |
入力ファイル | 結果 Advanced Query - Add Row Numbers の出力 コマンド |
区切り記号 | コンマ (,) |
- コマンドを保存する
ステップ6:コマンドグループの追加
チェーンにコマンドグループを追加し、アドバンスドクエリーのステップで特定されたドーナツ品種それぞれに対する反復を可能にする。
- Command Group をChainに追加する。
- CSV to JSON - Varieties コマンドをコマンドグループのIn セクションに接続します。
- コマンドグループをクリックし、スポイトアイコンを選択してコマンドの色を黄色 に変更します。
- グループの名前ドーナツの品種.
- Iterations toggle を有効にし、JSON File Output fromCSV to JSON - Varieties Command を選択する。
- コマンドグループを保存する。
ステップ7:トッピングのリストを入手する
ネストされた JSON 配列内のトッピングのリストを取得するには、JSON コネクタの Array to CSV コマンドを使用します。この動作をドーナツの種類ごとに繰り返す。
赤い感嘆符で示された以下のステップの注意書きに特にご注意ください。
- Array to CSV Command fromJSON Connector をチェーンに追加。
- Group Start からDonut Varieties Command Group からArray to CSV Command に接続する。
- コマンドに名前を付ける:Array to CSV - Toppings.
- JSON Data パラメータで、 GET - All Desserts CommandからのResponse Outputを選択する。
- Input Text パラメータは空白のままにする。
-
ルートへのパス パラメータでは、反復処理の値を利用して、反復処理を行う配列項目を指定します。
- 以下のステップは重要です。 、このステップを完了する前に全体をお読みください。
- Path to root パラメータをクリックする。 変数選択ペインから、Group Iterator を展開し、JSON File Iteration をクリックする。
- 緑色のJSON File Iteration バブルをクリックします。変数変換フォームが開きます。Get Value from JSON を選択し、プラス(+)記号をクリックします。RowNum (大文字・小文字を区別) と入力し、Value フィールドでエンターキーを押す。[承認]をクリックします。
- 変数には、変数変換が適用されたことを示すアスタリスクが表示されるはずである。
- これらのステップのいずれかが失敗した場合は、ルートへのパスから JSON File Iteration Variable を削除し、もう一度やり直してください。
- JSON File Iterationのバブルの後、topping (小文字)と入力し、Enterキーを押す。
- 以下のステップは重要です。 、このステップを完了する前に全体をお読みください。
- Filter パラメータは空白のままにする。
- Multi-value Delimiter パラメータのデフォルト値はカンマ(,)のままにしておく。
- 結果のプレビュー オプションをチェックする。
- Columnsセクションで、結果のCSVのカラムに値を抽出するJSON配列のキーを指定します。
- 列名 パラメーターに、トッピング と入力し、JSONPath パラメーターに、.タイプ と入力する。
- Delimiter パラメーターで、Comma を選択する。
- コマンドを保存する。
ステップ8:打者リストの入手
JSON コネクタの Array to CSV コマンドを使用して、ネストされた JSON 配列内の打者のリストを取得します。この動作をドーナツの種類ごとに繰り返す。このステップは前のステップとよく似ているので、前のステップで設定したコマンドをコピーし、打者情報用に更新するだけでよい。
- ArrayをCSVにコピー - Toppings Command.
- ドーナツ品種 コマンドグループからグループ開始 を配列から CSV - トッピング(コピー) コマンドに接続する。
- コピーしたコマンドに名前を付ける:Array to CSV - Batters.
-
Path to root パラメータで、Xをクリックして先頭のバブルを削除する。batters (case-sensitive) と入力し、Enterを押す。そして、batter と入力してエンターキーを押す。Path to rootパラメータには、3つの バブルがあるはずです。
- JSONファイルのイテレーション
- batters
- 生地
- 列セクションで、列名をtopping からbatter に変更する。
- コマンドを保存する
ステップ9:データをフラットにする
前回のエクササイズと同様に、Tabular Transformation ConnectorのAdvanced Query Commandでデカルト結合を使用してデータセットをフラットにします。
- Tabular Transformation Connector からAdvanced Query Command をチェーンに追加します。
- Array to CSV - Batters andArray to CSV - Toppings Commands toAdvanced Query Command.
- コマンドの名前を指定します:Advanced Query - Flatten JSON Object.
- Tables セクションで、Add ボタンを1回クリックし、利用可能なテーブルが2つになるようにする。以下の表セクションを完成させる:
ファイル | テーブル名 |
ファイル Array の出力を CSV に変換 - 打者 コマンド | バッター |
変換ファイル 配列から CSV への出力 - トッピング コマンド | トッピング |
-
Queryパラメータに以下のクエリを入力します:
Select '' as Variety,Batter,Topping from Batter,Topping
-
-
を選択し、Group Iterator を変数ペインから展開し、JSON File Iteration を選択して置き換える必要がある。 - JSONファイル反復変数を選択した後、緑色のバブルをクリックすると、変数変換フォームが開きます。
- Get Value from JSON Variable transformation を適用し、Value フィールドにvariety を使用する。
- varietyとAcceptを入力した後、必ずEnterを押してください!
-
- Input Delimiter およびOutput Delimiter パラメーターにはコンマ を指定する。
- 結果のプレビュー オプションをチェックする。
- コマンドを保存する。
ステップ9:エクササイズのテスト
- the Chainを出版。
- Execute をクリックし、Run Chain を選択する。
- チェインが完了したら
- Advanced Query - Flatten JSON Object」ノードをクリックし、「Outputs」タブを選択します。各反復のレコード数を確認する:
- 反復1:28レコード
- 反復2:5レコード
- 反復3:8レコード
- 結果のプレビュー (目のアイコン) をクリックします。 各反復のデータの一致を確認します。
- Advanced Query - Flatten JSON Object」ノードをクリックし、「Outputs」タブを選択します。各反復のレコード数を確認する:
チェーンを使ったデータ変換の詳細については、Connected Learning Paths - Transformation Introduction をご覧ください!