この接続学習パスでは、XMLファイルをCSVに変換する方法を説明するチェーンを作成します。また、データセットをどのように比較し、差異を分離するかを探求する。
| プライマリ学習目標 | XMLコネクター |
| セカンダリ学習目標 | 表形式トランスフォーメーション、スマートフィルター、区切り文字の変更、高度なクエリコマンド |
| 前提条件 | XML コネクタ接続の構成 |
| サポートテンプレート | CLP|XMLデータを使用する |
ステップ1:チェーンの作成
- 新規チェーン を追加し、チェーンに名称を付けます:CLP | XML データに使用する.
- 次のように 2 つのチェーン変数を作成します:
- チェーン変数 で、プラス記号 (+) を 2 回クリックします。
- 変数には以下の名称と値を使用します:
- XML変数
- 名称: cv-XML-Employee
- 値: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/employees.xml
- CSV 変数
- 名称: cv-CSV-Employee
- 値: https://cs-sftp-training-bucket.s3.amazonaws.com/cs-training/transformation-qs/employee_detail.csv
- XML変数
- チェーンを保存します。
ステップ2:CSV書式設定でのデータ取得
HTTPコネクターを使用して、CSV書式で人数関連データを取得します。後のステップでは、同様の人数情報をXML書式設定で取得し、データセットを比較して相違点を特定する。
- HTTPコネクター からGET コマンドをStartノードに追加する。
-
次の値を使用してコマンドを構成します:
名称 GET - CSV書式での人員数 ユーザー名称 <leave> パスワード <leave> CA証明書 <leave> 証明書 <leave> 証明書秘密キー <leave> 表示レスポンス チェック済み URL cv-CSV-Employee チェーン変数 クエリ文字列 <leave> コンテンツタイプ テキスト/CSV 応答 <leave> - コマンドを保存する。
ステップ3:XML書式でのデータ取得
HTTPコネクターを使用して、XML書式設定で人数関連データを取得します。ステップ2でメモしたように、次のステップでは、XMLデータセットとCSVデータセットを比較し、相違点を特定する。
- HTTP コネクター からGET コマンドをチェーンに追加する。
- GET コマンドに開始ノード(GET - CSV書式設定のヘッドカウント)を接続します。
-
次の値を使用してコマンドを構成します:
名称 GET - XML書式設定で人数 ユーザー名称 <leave> パスワード <leave> CA証明書 <leave> 証明書 <leave> 証明書秘密キー <leave> 表示レスポンス チェック済み URL cv-XML-Employee チェーン変数 クエリ文字列 <leave> コンテンツタイプ application/xml 応答 <leave> - コマンドを保存する。
ステップ4:XMLファイルを区切り文字に変換する
XML コネクターを使用して、XML データを CSV 形式に変換し、区切り書式でのデータを期待するチェーンの後のコマンドを利用できるようにする。
- Element List to CSV コマンドをXML コネクター からチェーンに追加。
- GET - Headcount in XML Format Command をElement List to CSV Command に接続します。
- 次の値を使用してコマンドを構成します:
- Input File パラメータには、GET - Headcount in XML Format Command からResponse Output を選択します。
- Input Text パラメータは空白のままにする。
-
Path to root パラメータには、以下のエンベ ロープ情報を入力します:
/employee_data/employee - Preview Result パラメータチェックボックスをマークします。
-
Columns セクションで、Add ボタンを 12 回クリックします。
追加された列のそれぞれについて、Column Name とXPath フィールドの両方に、前のステップへプレビューされたデータレコードのフィールド名を入力します。
例:emp_id⚠️ XPathフィールドは大文字と小文字を区別し、エンベロープの大文字と小文字を一致させなければならない。
- 複数値デリミタ・パラメータには、パイプ (|) を入力します。
- コマンドを保存する。
- チェーンを更新、実施、実行します。
-
Element List to CSV - All Employees Command ノードのLog タブをレビューし、従業員のリストが表示されていることを確認する。
⚠️ このステップの実行と結果のレビューは省略しないでください。このコマンドのコピーがチェーンに作成され、その後、コマンドの複数のインスタンスにわたってエラーを修正する必要があるからです。
ステップ5:変換後のXMLをタブ区切りからカンマ区切りに変更する
Tabular Transformation Connector を使用して、XML 変換から生成された出力をタブ区切り書式からカンマ区切り書式に変換します。
- Change Delimiterコマンドを、Tabular TransformationConnectorからチェーンに追加
- Element List to CSV - All Employees コマンドとChange Delimiter コマンドを接続します。
- 次の値を使用してコマンドを構成します:
- 名称 デリミターの変更 - 全従業員
- 入力ファイル: 変換ファイル出力要素一覧から を CSV - 全社員 コマンド
- 入力デリミタ \t
- 出力デリミタ: (カンマ)
- コマンドを保存する。
ステップ6:CSVとXMLのデータセットを比較し、相違点を特定する。
XML データセットとネイティブ CSV データセットの相違点を体系的に識別するには、Advanced Query を使用します。この例では、XMLデータセットの中でCSVデータセットと異なるレコードや欠落しているレコードを識別します。CSVデータセット内で検出された追加レコードで、XMLデータセットにないものは、この演習では識別されません。
- Advanced QueryコマンドをTabular Transformation Connectorからチェーンに追加します。
- Change Delimiter - All Employees コマンドをAdvanced Query コマンドに接続する。
- コマンドの名称:Advanced Query - All Employees.
-
テーブル セクションで、追加 ボタンをクリックし、2つ目のタブを追加する。
- 最初のテーブル向けに:
- Change Delimiter - All Employees Command から出力されるCSV Result を指定します。
- テーブル名称 にXML を指定する。
- 2つ目のテーブル:
-
GET - Headcount in CSV Format Command からResponse Output を指定します。
テーブル名称 として CSV を指定します。 - クエリパラメータに以下を入力します:
XML から * を選択 EXCEPT CSV から * を選択 - Input Delimiter およびOutput Delimiter フィールドで、Comma を指定する。
- 結果のプレビュー オプションをチェックする。
-
GET - Headcount in CSV Format Command からResponse Output を指定します。
- 最初のテーブル向けに:
- コマンドを保存する。
- チェーンを更新、実施、実行します。
-
Advanced Query - All Employees Command node のLog タブをレビューし、クエリによって返されたレコードの従業員 ID が以下のものと一致することを確認します。
社員ID 01-6875791 10-4199621 38-3932553 63-0417180 78-3600453 85-6818050 97-2828467
ステップ7:コマンドグループの追加
コマンドグループをチェーンに追加し、コマンド整理を改善します。このステップはこの練習においては必要ですが、チェーンの技術的要件ではありません。このステップは、単にチェーンのノードを組織化する機能を説明するためのものである。
- コマンドグループ をチェーンに追加する。
- GET - Headcount in XML Format コマンドをコマンドグループの In セクションに接続する。
- コマンドグループをクリックし、スポイトアイコンを選択してコマンド色を赤 に変更する。
- グループの名称: 正社員。
ステップ8: CSVデータを現役社員のみに絞込みます。
スマートフィルターを使用して、従業員がアクティブである従業員レコードのみを保持します。フィルターを定義する際、terminated(絞込み)フィールドが空白であることは、従業員がアクティブであることを示すと仮定します。
- Tabular Transformation Connector からSmart Filter Rows コマンドをチェーンに追加します。
- コマンドグループからグループスタート をスマートフィルター コマンドに接続する。
- 次の値を使用してコマンドを構成します:
- コマンドの名称を指定します:Smart Filter Rows - CSV Data - Active Employees.
- 入力ファイル パラメータでは、GET - Headcount in CSV Format Command からResponse Output を選択します。
- 出力 ファイルパラメータは空白のままにする。
- カンマ をデリミタ として指定する。
-
フィルター セクションで以下のステップを実行します:
- テキスト フィルターの追加 ボタンをクリックする。
- 列名称 パラメータに、用語 と入力する。
- Case Insensitive オプションをチェックする。
- 条件 ドロップダウンから、等しい を選択。
- Compare Textパラメータに、trueと入力します。
- Notオプションをチェックします。
-
Trim チェックボックスをオフのままにします。
このフィルターにより、フィールド "termed" にtrue の値が含まれない(つまり、"false" が含まれるか、空白である)レコードが識別されるようになります。
- 結果のプレビュー オプションをマークしたままにします。
-
Inverse オプションを使用すると、フィルター条件に一致するすべての行を保持(チェックを入れる)または削除(チェックを外す)することができます。この演習では、"termed" フィールドの値が true または空白の行をすべて保持します。
これを実現するには、Inverse チェックボックスをマーク (チェック) します。 - コマンドを保存する。
ステップ8: CSVデータを現役社員のみに絞込みます。
スマートフィルターを使用して、従業員がアクティブである従業員レコードのみを保持します。フィルタを定義する際、terminated (「termed」) フィールドが空白であることは、従業員がアクティブであることを示すものとします。
- Tabular Transformation Connector からSmart Filter Rows コマンドをチェーンに追加します。
- コマンドグループからグループスタート をスマートフィルター コマンドに接続する。
- 次の値を使用してコマンドを構成します:
- コマンドの名称を指定します:Smart Filter Rows - CSV Data - Active Employees.
- 入力ファイル の場合は、GET - Headcount in CSV Format Command からResponse Output を選択します。
- 出力 ファイルパラメータは空白のままにする。
- カンマ をデリミタ として指定する。
-
フィルターセクションで、
- テキスト フィルターの追加 ボタンをクリックする。
- 列名称 パラメータに、用語 と入力する。
- Case Insensitive オプションをチェックする。
- 条件 ドロップダウンから、等しい を選択。
- Compare Textパラメータに、trueと入力します。
- Notオプションをチェックします。
-
Trim チェックボックスをオフのままにします。
このフィルターにより、フィールド "termed" にtrue の値が含まれない(つまり、"false" が含まれるか、空白の)レコードが識別されます。
- プレビュー結果 チェックボックスをマーク(チェック)したままにします。
- Inverseオプションを使用すると、スマート フィルタは、フィルタ条件に一致するすべての行を保持 (チェックを入れる) または削除 (チェックを外す) することができます。この演習では、用語フィールドの値がtrueまたは空白である行をすべて保持したい。これを実現するには、Inverse チェックボックスをマーク(チェック)します。
- コマンドを保存する。
ステップ9:XMLデータをフィルターにかけながら区切り変換する
このステップでは、区切り書式に変換しながらXMLデータにフィルターをかけ、アクティブな従業員のみを識別する。このデータセットをその後、フィルター込みCSVデータセットと比較し、相違点を特定します。
- Element List to CSV - All Employees Command をコピーします。
- コマンドグループからGroup Start をElement List to CSV - All Employees (Copy) Command に接続します。
- コマンドの名称を編集します:Element List to CSV - Active Employees.
- Path to root」パラメータに以下を入力します。
/employee_data/employee[termed!='true']
これで、フィールド「termed」にtrue の値が含まれない(つまり、「false」が含まれるか、空白の)レコードが識別されます。 - コマンドを保存する。
ステップ10:フィルター込みXMLデータをカンマ区切りに変更する
全従業員名簿と同様に、XMLからタブ区切りに変換されたフィルター付き正従業員名簿は、カンマ区切りに変換する必要があります。
- Change Delimiter - All Employeesコマンドをコピーします。
- Element List to CSV - Active Employees コマンドをElement Change Delimiter - All Employees (Copy) コマンドに接続する。
- 以下の値を使用してコマンドを構成します。
- 名称Change Delimiter - Active Employees.
- Input fileパラメータを修正し、Converted File出力をElement List to CSV - Active Employeesコマンドから使用します。
- コマンドを保存する。
ステップ11:現役社員との違いをチェックする
全従業員名簿と同様に、XMLからタブ区切りに変換されたフィルター付き正従業員名簿は、カンマ区切りに変換する必要があります。
- Advanced Query - All Employees コマンドをコピーする。
- コマンドグループのOut をAdvanced Query - All Employees (Copy) コマンドに接続する。Advanced Query - All Employeesコマンドをグループアウトに接続すると、グループアウトのコマンドにチェーンが進行する前に、グループスタートに接続されているすべてのコマンドが終了します。
- 以下の値を使用してコマンドを構成します:
- 名称: Advanced Query - Active Employees.
-
Tables セクションで、両方のテーブルのFile パラメータを以下の値を使用して修正します:
テーブル ファイル XML Change DelimiterからのCSV 結果出力 - Active Employees コマンド CSV スマートフィルター行からのスマートフィルター行出力 - アクティブのみ、CSVデータコマンド
- コマンドを保存する。
ステップ12:エクササイズのテスト
チェーンが完成したら、結果をテストする。
- チェーンを更新します。
-
Execute をクリックして、Run Chain を選択する。
- チェーンの実行が完了したら、Advanced Query - Active Employees ノードをクリックします。
- Outputs タブで、4 つのレコードが出力されたことを確認します。
-
ログタブをクリックし、クエリによって返されたレコードの従業員IDが下記と一致することを確認します。
社員 ID 01-6875791 63-0417180 78-3600453 85-6818050
チェーンを使ったデータ変換の詳細は、Connected Learning Paths - Transformation Introduction をご覧ください!