この接続学習パスでは、入れ子オブジェクトを含むJSONデータセットをCSVに変換する方法を説明するチェーンを作成します。また、この入れ子構造を平坦にするために、デカルト結合を使用する方法を探ります。
| プライマリ学習目標 | 入れ子JSONオブジェクトのJSONコネクター機能 |
| セカンダリ学習目標 | 表形式変換アドバンスクエリコマンド |
| 前提条件 | JSON コネクタ接続の構成 HTTP コネクタ接続の構成 |
| サポートテンプレート | CLP|JSON入れ子オブジェクトに使用する |
ステップ1:チェーンの作成
- 新規チェーンの追加.
- チェーンの名称:CLP | JSON 入れ子オブジェクトに使用する.
- チェーン変数を作成し、以下の値を使ってそれを移入します:
- 名称: cv-JSON-Donut
- 値: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/donut.json
- チェーンを保存します。
ステップ2:JSONデータの取得
HTTP コネクターを使用して、ウェブロケーションから JSON 書式設定で人数関連データを取得します。
- HTTPコネクター からGET コマンドをStartノードに追加する。
- 次の値を使用してコマンドを構成します:
名称 GET - JSONデータ ユーザー名称 <leave> パスワード <leave> CA証明書 <leave> 証明書 <leave> 証明書秘密キー <leave> 表示レスポンス チェック済み URL cv-JSON-Donut チェーン変数 クエリ文字列 <leave> コンテンツタイプ application/json 応答
<leave> - コマンドを保存する。
ステップ3:入れ子になっていないJSONデータの取得
このチェーンでは、JSON コネクタのObject to CSV コマンドを使用して、JSON オブジェクトから入れ子になっていない名称とタイプ キーを抽出します。
メモ: JSONデータセットのスキーマを理解することは重要です。File Utilities Connector のList File Content Command を利用してスキーマを可視化することができる。参照用に、「donut」JSONのスキーマを示します:
スキーマ:
{"id": "0001", "type": "donut", "name": "Cake", "ppu": "0.55, "batters":{バッター":[{ "id": "1001", "type": "レギュラー"}, { "id": "1002", "type": "チョコレート"}, { "id": "1003", "type": "ブルーベリー"}, { "id": "1004", "type": "デビルズフード"}]}, "トッピング":[{ "id": "5001", "type": "なし"}, { "id":"5002", "タイプ別": "グレーズ"}, { "id": "5005", "type": "Sugar"}, { "id": "5007", "type": "Powdered Sugar"}, { "id": "5006", "type": "Chocolate with Sprinkles"}, { "id": "5003", "type": "Chocolate"}, { "id": "5004", "type": "Maple"}].} - Object to CSV コマンドをJSON コネクターからチェーンに追加。
- Start Node (GET - JSON Data) をObject to CSV Command に接続します。
- コマンドを開き、以下の値を使用して構成します。
- コマンドの名称を指定します:Object to CSV - Name & Type.
-
JSON Data パラメータには、GET - JSON Data Command からのResponse Output を選択します。
- Input Text およびPath to root パラメータは空白のままにする。
- Multi-value Delimiter パラメータはカンマ(,)のままにしておく。
- 結果のプレビュー チェックボックスをマークします。
-
DelimiterパラメータにPipeを選択します。
Columns セクションを使用して、JSON オブジェクトから列 (CSV) データセットに抽出する要素を指定します。 - 列を追加するには、Addボタンを1回クリックします。
- 最初の列には、JSONPathパラメータにColumn Name 、.name 、name と入力します。
- 2列目には、JSONPathパラメータにColumn Type 、.type 、type と入力します。
- コマンドを保存する。
ステップ4:トッピングのリストを入手する
JSON コネクタの Array to CSV コマンドを使用して、入れ子 JSON 配列のトッピングのリストを取得します。
- Array to CSV Command を JSON コネクタからチェーンに追加します。
- GET - JSON Data コマンドをArray to CSV コマンドに接続します。
- 次の値を使用してコマンドを構成します:
- コマンドの名称:Array to CSV - Toppings.
-
JSON Data パラメータには、GET - JSON Data Command からResponse Output を選択します。
- 入力テキスト パラメータは空白のままにする。
-
Path to root パラメータには、topping (小文字) とタイプし、Enter キーを押します。Topping の前に等号がグレーのバブルで表示されます。
- Filter パラメータは空白のままにする。
- Multi-value Delimiter パラメータのデフォルト値は、カンマ(,) のままにします。
- Preview Result チェックボックスをマークします。
-
Columns セクションでは、結果の CSV の列に値を抽出する JSON 配列のキーを指定します。
- 最初のColumn name パラメータには、ToppingID と入力し、JSONPath パラメータには、.id と入力します。
- 2 番目の列名称 パラメータには、ToppingType を入力し、JSONPath パラメータには、.type を入力します。
- Delimiter パラメータでは、Pipe を選択します。
- コマンドを保存する。
ステップ5:打者リストの入手
このチェーンでは、JSON コネクターのArray to CSV コマンドを使用して、入れ子になっている JSON 配列のバターのリストを取得します。各配列の入れ子が異なるため、Array to CSV コマンドを2つ使用してバッターとトッピングを抽出します。
Object to CSV Command を入れ子の JSONPaths(たとえば、 .topping[*].type )と一緒に使用すると、マルチパートの値が作成され、CSV データセットで使用するのが難しくなります。
- JSON コネクタ からArray to CSV Command をチェーンに追加します。
- GET - JSON Data コマンドをArray to CSV コマンドに接続します。
- 次の値を使用してコマンドを構成します:
- コマンドの名称:Array to CSV - Batters.
-
JSON Data パラメータには、GET - JSON Data Command からResponse Output を選択します。
- 入力テキスト パラメータは空白のままにする。
-
Path to root パラメータには、「batters (すべて小文字)」とタイプし、Enter キーを押します。次に、batter (すべて小文字)と入力し、Enterキーを押します。
Batterとbatterは、 この順番で2つのグレーのバブルに表示されるはずです。 - Filter パラメータは空白のままにする。
- Multi-value Delimiter パラメータのデフォルト値、カンマ(,) のままにする。
- 結果プレビュー オプションをチェックする。
- 列セクションで、結果のCSVの列に値を抽出するJSON配列のキーを指定します。
- Column name パラメータには、BatterID と入力し、JSONPath パラメータには、.id と入力します。
- 列名称 パラメータには、BatterType を入力し、JSONPath パラメータには、.type を入力します。
-
Delimiter パラメータでは、Pipe を選択します。
- コマンドを保存する。
ステップ6:データの平坦化
データセットを平坦化するために、Tabular Transformation Connector のAdvanced Query Command で「カルテシアン結合」を使用します。デカルト結合は、Object to CSV およびArray to CSV コマンドを使用して抽出した要素の可能なすべての結合を作成します。
- Advanced QueryコマンドをTabular Transformation Connectorからチェーンに追加します。
- Object to CSV - Name & Type,Array to CSV - Batters, andArray to CSV - Toppings Commands to theAdvanced Query Command.の各オブジェクトを CSV に接続します。
- 以下の値を使用してコマンドを構成します:
- コマンドの名称を指定します:Advanced Query - Flatten JSON Object.
-
Tables セクションで、Add ボタンを2回クリックし、使用可能なテーブルが3つになるようにする。
以下の値を使用してテーブルを完成させます:ファイル テーブル名 変換ファイルを選択Object to CSV - Name & Type Command から出力。 名称 変換ファイルを選択Array から CSV への出力 - Batters Command。 バッター 変換ファイルの選択Array to CSV - Toppings Command からの出力。 トッピング -
クエリ パラメータには、次のように入力します:
Select Type as dessert_type, Name as variety, BatterType, ToppingType from Name, Batter, Topping. - Input Delimiter およびOutput Delimiter パラメータには、Pipe を指定します。
-
結果のプレビュー チェックボックスをマークします。
- コマンドを保存する。
ステップ7:チェーンのテストと結果のレビュー AAA
- チェーンを更新します。
- Execute をクリックし、Run Chain を選択します。
- チェーンが完了したら、、
- Advanced Query - Flatten JSON Object ノードをクリックし、Outputs タブを選択します。
-
Record Count が28 であることを確認します。
-
Logs タブを選択し、データのプレビューが以下のスクリーンショットと一致することを確認します。
チェーンを使用したデータ変換の詳細は、Connected Learning Paths - Transformation Introduction をご覧ください。