この接続学習パスでは、JSONデータセットをCSVに変換する方法を説明するチェーンを作成します。このデータセットの例では、入れ子の配列があります。
このパスは、JSONデータの演習で学んだループの概念と、JSON入れ子パスのデカルト結合の概念を強化するものです。これらのパスを修了していない場合は、このパスを修了する前に修了することを強く勧める。
| プライマリ学習目標 | JSONコネクターの機能 |
| セカンダリ学習目標 | 表形式変換アドバンスクエリコマンド、イテレータ、変数変換の威力 |
| 前提条件 | |
| チェーンテンプレートのサポート | CLP|入れ子オブジェクトのJSON配列に使用する |
ステップ1:チェーンの作成
- 新規チェーンの追加
- チェーンの名称CLP|入れ子オブジェクトのJSON配列に使用する
- チェーン変数の作成
- チェーンの保存
ステップ2:JSONデータの取得
HTTPコネクターを使用して、ウェブの場所からドーナツデータを取得する。このデータセットは、入れ子になったオブジェクト(属性)の配列(複数のアイテム)を持つ、より複雑なJSONデータセットの例を示している。
- HTTPコネクターからStartノードにGETコマンドを追加する。
- コマンドを以下のように構成する:
| 名称 | GET - すべてのデザート |
| ユーザー名称 | <leave> |
| パスワード | <leave> |
| CA証明書 | <leave> |
| 証明書 | <leave> |
| 証明書秘密キー | <leave> |
| 表示レスポンス | チェック済み |
| URL | cv-JSON-AllDonut チェーン変数. |
| クエリ文字列 | <leave> |
| コンテンツタイプ | application/json |
| 応答 | <leave> |
- コマンドの保存
ステップ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":"Powdered Sugar"},{"id":"5006","type":"Chocolate with Sprinkles"},{"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 コマンドをJSON コネクター からチェーンに追加。
- 開始ノード(GET - All Desserts)をArray to CSV コマンドに接続する。
- コマンドの名称:Array to CSV - Get Variety。
- JSONデータパラメータで、GET - All Dessertsコマンドからレスポンス出力を選択します。
- 入力テキスト 、ルートへのパス、そしてフィルターパラメータは空白のままにしておきます。
- Multi-value Delimiter パラメータはカンマ(,)のままにしておく。
- 結果プレビュー オプションをチェックする。
- 列名称 と.name JSONPathのパラメータにはvariety と入力します。
- DelimiterパラメータにPipeを選択します。
- コマンドの保存
ステップ4:イテレータブルデータセットの作成
メモにあるように、データセットは入れ子オブジェクトの配列(つまり複数のアイテム)を持っている。それぞれの品種を個別にプロセスするには、データセットに行番号を追加しなければならない。これらの行番号は、以降のArray to CSVコマンドで、入れ子オブジェクト(属性)が解析される配列アイテム(ドーナツ)を識別するために使用されます。
チェーンビルダーをよくご存知の方は、なぜ行番号追加コマンドではなく、アドバンスドクエリを使うのか不思議に思われるかもしれない。行番号の追加コマンドは1(1)からカウントを開始しますが、JSON配列はゼロベースなので、0(0)からカウントを開始する必要があります。
- Advanced QueryコマンドをTabular Transformation Connectorからチェーンに追加します。
- Array to CSV - Get Variety Command toAdvanced Query Commandに接続。
- コマンドの名称:Advanced Query - Add Row Numbers。
- テーブルセクションの構成
- ファイルフィールドに、Array to CSV - Get Varietyコマンドからの変換ファイル出力を指定します。
- テーブル名称 パラメータに品種 と入力。指定されたクエリがこのテーブルに対して実行される。
- クエリパラメータに以下を入力する:
SELECT
ROW_NUMBER () OVER (
ORDER BY variety
)-1 RowNum,
variety
FROM
varieties
- 入力デリミタ と出力デリミタ のパラメータには、それぞれパイプ とカンマを指定する。
- プレビュー結果 パラメータをチェックする。
- コマンドを保存する。
ステップ5:JSON配列の作成
JSONコネクターのCSV to JSONコマンドを使用して、一意の品種リストをJSON配列に変換します。コマンドグループは、この配列の各アイテムを繰り返し処理することができる。
- CSV to JSON コマンドをJSON コネクター からチェーンに追加。
- Advanced Query - Add Row Numbers Command をCSV to JSON Command に接続する。
- 以下のようにコマンドを構成する:
| 名称 | CSVからJSONへ - 各種 |
| 入力ファイル | 結果 Advanced Query - Add Row Numbersコマンドからの出力。 |
| 区切り記号 | コンマ (,) |
- コマンドの保存
ステップ6:コマンドグループの追加
チェーンにコマンドグループを追加し、アドバンスドクエリのステップで識別されたドーナツ品種のそれぞれに対して反復を有効化します。
- コマンドグループ をチェーンに追加する。
- CSV to JSON - Varieties コマンドをコマンドグループのIn セクションに接続する。
- コマンドグループをクリックし、スポイトアイコンを選択してコマンドの色を黄色 に変更する。
- グループの名称:ドーナツの品種.
- 反復トグルを有効化し、CSV to JSON - Varieties CommandからJSONファイルの出力を選択します。
- コマンドグループを保存する。
ステップ7:トッピングのリストを入手する
JSON コネクタの Array to CSV コマンドを使用して、入れ子になっている JSON 配列のトッピングのリストを取得します。このアクションをドーナツの種類ごとに繰り返す。
赤い感嘆符で示された以下のステップの注意書きに特にご注意ください。
- Array to CSV コマンドをJSON コネクター からチェーンに追加。
- ドーナツ品種 コマンドグループからグループ開始 をArray to CSV コマンドに接続する。
- コマンドの名称:Array to CSV - Toppings.
- JSONデータパラメータで、GET - All Dessertsコマンドからレスポンス出力を選択します。
- 入力テキスト パラメータは空白のままにする。
-
ルートへのパス パラメータでは、イテレーションの値を利用して、イテレーションが動作する配列アイテムを指定します。
- 以下のステップは、重要であり、このステップを完了する前に全体をお読みください。
- Path to rootパラメータをクリックします。 変数選択ペインから、Group Iterator を展開し、JSON File Iteration をクリックする。
- ルートへのパス・パラメータにある緑色のJSON File Iteration バブルをクリックします。変数変換/トランスフォーメーションフォームが開きます。Get Value from JSON を選択し、プラス(+)記号をクリックする。ValueフィールドにRowNum (大文字と小文字を区別すること) と入力し、Enterキーを押します。[承認]をクリックします。
- 変数には、変数トランスフォーメーションが適用されたことを示すアスタリスクが付くはずです。
- �これらのステップのいずれかが失敗した場合、Path to root から JSON File Iteration Variableを削除し、もう一度やり直してください。
- JSON File Iterationのバブルの後、topping (小文字) とタイプし、エンターキーを押す。
- 以下のステップは、重要であり、このステップを完了する前に全体をお読みください。
- Filter パラメータは空白のままにする。
- Multi-value Delimiter パラメータのデフォルト値はカンマ(,)のままにしておく。
- 結果プレビュー オプションをチェックする。
- 列セクションで、JSON配列のキー(複数可)を指定し、CSVのカラムに値を抽出します。
- 列名称パラメータにtoppingと入力し、JSONPathパラメータに、.typeと入力します。
- Delimiterパラメータで、Commaを選択します。
- コマンドを保存する。
ステップ8:打者リストの入手
JSON コネクターの Array to CSV コマンドを使用して、入れ子になっている JSON 配列の打者リストを取得します。このアクションをドーナツの種類ごとに繰り返す。このステップは以前のステップとよく似ているので、以前のステップで構成したコマンドをコピーし、batter情報用に更新するだけでかまいません。
- ArrayをCSVにコピー - Toppings コマンド。
- ドーナツの種類 コマンドグループからグループ開始 をArray to CSV - Toppings (Copy) コマンドに接続する。
- コピーしたコマンドの名称:Array to CSV - Batters.
-
Path to rootパラメータで、Xをクリックしてtopping bubbleルを削除します。batters (大文字と小文字を区別すること) とタイプ入力し、Enterを押します。そして、batter とタイプし、Enterを押す。Path to rootパラメータには、3つの 気泡があるはずです。
- JSONファイル反復 *
- batters
- 生地
- 列セクションで、列名称をtopping からbatter に変更する。
- コマンドの保存
ステップ9:データの平坦化
前回のエクササイズと同様に、Tabular Transformation ConnectorのAdvanced Query Commandでデカルト結合を使用してデータセットをフラットにします。
- Advanced QueryコマンドをTabular Transformation Connectorからチェーンに追加します。
- Array to CSV - BattersとArray to CSV - Topingsコマンドを、Advanced Queryコマンドに接続します。
- コマンドの名称を指定します:Advanced Query - Flatten JSON Object.
- Tables セクションで、Add ボタンを1回クリックし、利用可能なテーブルが2つになるようにする。以下の表セクションを完成させる:
| ファイル | テーブル名 |
| 変換ファイル Array から CSV に出力 - 打者 コマンド | バッター |
| 変換ファイル 配列から CSV への出力 - トッピング コマンド | トッピング |
-
クエリパラメータに以下のクエリを入力する:
Variety,Batter,Topping from Batter,Toppingとして「<JSONファイル反復>」を選択します。
-
- <JSONファイル反復>は、変数ペインからグループイテレーターを拡張しJSONファイル反復を選択することで、選択し置換する必要があります。
- JSONファイル反復変数を選択した後、緑色のバブルをクリックすると、変数トランスフォーメーションフォームが開きます。
- 値フィールド向けのvarietyを使用してGet Value from JSON変数トランスフォーメーションを適用します。
- varietyとAccept the transformationを入力したら、必ずEnterキーを押してください!
- 入力デリミタ と出力デリミタ のパラメータにはカンマ を指定する。
- 結果のプレビュー オプションをチェックする。
- コマンドを保存する。
ステップ9:エクササイズのテスト
- チェーンを更新します。
- 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 をご覧ください!