by
色川穂高
|
2023年10月25日
この記事では「CData Arc ハンズオンセミナー ~はじめてのCData Arc~」の「シナリオ2-2」について進めていきます。
ハンズオンのシナリオ
クラウドストレージやFTP/SFTP でファイル連携で取得したファイルの中身(ファイルに格納されているデータ群)をDB やSaaS に連携するのは、よくあるシナリオです。
このシナリオでは
シナリオ2-1 で作成したファイル連携フローの応用として、Box から取得(ダウンロード)したCSV ファイルのデータをMySQL に更新(Upsert)します。
Box の構成
このシナリオでは、Box にあるCSV ファイルを取得(ダウンロード)します。
Box にあるCSV ファイルの構成
Box にあるCSV ファイルは以下のような構成になっています。
MySQL の構成
このシナリオでは、ハンズオン実行環境に構成されているMySQL のhandson スキーマの「商品」テーブルにデータを登録・更新します。
連携フローの概要
このシナリオでは、このような連携フローを作成していきます。
|
コネクタ |
設定内容 |
1 |
Box |
Box からCSV ファイルを取得(ダウンロード) |
2 |
CSV |
CSV 形式からXML 形式へ変換 |
3 |
XMLMap |
2 と4 をマッピング |
4 |
MySQL |
MySQL へUpsert(データを更新) |
ワークスペースの作成
CData Arc では、フローキャンバス上で目的の異なる連携フローを分離できるように、任意の「ワークスペース」を作成することができます。ワークスペースを作成するにはフローキャンバス右上の「ワークスペースを作成」をクリックします。
ワークスペース名には任意の名称を設定することができます。何のためのワークスペースか、分かりやすい名前を設定します。ここでは「Box_to_MySQL」と設定します。
このシナリオでは、この「Box_to_MySQL」ワークスペースにフローを作成していきます。
Box コネクタ
最初に「Box からCSV ファイルを取得(ダウンロード)」するBox コネクタを設定します。この連携フローのはじまり(起点)となるコネクタです。
配置
Box コネクタは「MFT」カテゴリに含まれています。「MFT」カテゴリから「Box」を選択してフローキャンバスへ配置します。
コネクタID には任意の名称を設定することができます。何を行うコネクタか、分かりやすい名前を設定します。ここでは「Box_ProductCSV_Download」と設定します。
接続
最初にBox への接続を確立します。Box コネクタでは、Box との接続をOAuth 認証で確立します。「接続」をクリックすると、ブラウザが起動しBox のログインページが表示されます。
以下の情報を入力して承認します。
メールアドレス |
ハンズオン環境のクレデンシャル情報に従って設定します |
パスワード |
ハンズオン環境のクレデンシャル情報に従って設定します |
Box アカウントへのアクセスをCData Arc に許可するか確認されます。「Box へのアクセスを許可」します。
「Success!」と表示されれば成功です。
受信(ダウンロード)設定
CData Arc のBox コネクタでは、Box からのファイル受信(ダウンロード)やBox へのファイル送信(アップロード)を行うことができます。
このシナリオでは、受信(ダウンロード)に必要な以下の情報を設定をします。
リモートフォルダ |
Handson |
ファイルマスク |
Product.csv |
CData Arc のBox コネクタには、前回ダウンロードして以降に更新のあったファイルのみを取得する「キャッシング」機構が備わっています。デフォルトで「タイムスタンプ比較」によるキャッシングが有効になっていますが、このハンズオンでは無効にしておきます。
「変更を保存」をクリックして、コネクタの設定を保存します。これでBox コネクタの設定は完了です。
取得(受信)のテスト
実際にファイルを受信(ダウンロード)できることを確認してみます。「アウトプット」タブの「受信」をクリックします。
Box コネクタでは、受信(ダウンロード)したファイル単位にメッセージファイルとして生成されます。
メッセージファイル名をクリックすると、データを確認することができます。「メッセージをダウンロード」でメッセージファイルをダウンロードしておきます。このメッセージファイル(Box からダウンロードされるCSV ファイル)は、後続のCSV コネクタの「テストファイルをアップロード」で利用します。
テストで取得(受信)したメッセージやログは、選択して「削除」できます。
CSV コネクタ
次に「CSV 形式からXML 形式へ変換」するCSV コネクタを設定します。CData Arc は、データの操作と変換の中間形式としてXML を使用します。多くのコネクタは、さまざまな形式のファイルをXML に、またはその逆に変換します。CSV コネクタもその1つです。
配置
CSV コネクタは「コア」カテゴリに含まれています。「コア」カテゴリから「CSV」を選択してフローキャンバスへ配置します。
コネクタID には任意の名称を設定することができます。何を行うコネクタか、分かりやすい名前を設定します。ここでは「CSV_to_XML」と設定します。
CSV の設定
このシナリオで扱うCSV ファイルは、1行目がそれぞれの列の名前を表すヘッダー行になっています。そのため、ここでは「カラムヘッダーが存在します」を有効にします。
「変更を保存」をクリックして、コネクタの設定を保存します。
テストファイルをアップロード
多くのデータ連携フローでは、CSV コネクタはXMLMap コネクタと組み合せて利用されます。CSV ファイルがフローへの入力である場合、CSV コネクタはCSV ファイルをXML に変換し、そのXML をXMLMap コネクタに渡して変換します。逆に、CSV ファイルがフローからの出力である場合、CSV コネクタは XMLMap コネクタからXML を受け取り、それをCSV ファイルに変換します。
CSV コネクタを設定しただけでは、CSV コネクタから出力されるXML のデータモデル(mapping)は判断することができません。そのため後続となるXMLMap コネクタでは、ソースファイルとして出力される予定のXML の構造を記したファイルをアップロードする必要が生じますが、CSV コネクタには、XMLMap コネクタでのマッピングするプロセスを簡素化するための「テストファイルのアップロード」機能が含まれています。ここでは「テストファイルのアップロード」を利用します。
CSV コネクタの「インプット」タブにある「…ほか」を選択して「テストファイルをアップロード」をクリックします。
「マッピングテストファイルをアップロード」ダイアログで「ファイルを選択」から、先ほどBox コネクタでダウンロードしたCSV ファイルを指定して「アップロード」します。(先ほどダウンロードしたCSV ファイルを「ダウンロード」ディレクトリから選択します)
「サンプルファイルがアップロードされました。…」と表示されれば「テストファイルをアップロード」機能を利用して、このCSV コネクタが出力(アウトプット)する予定のXML のデータモデル(mapping)生成に成功しました。
これでCSV コネクタの設定は完了です。
フロー設定
Box コネクタからCSV コネクタ間の流れを設定していきます。「Box コネクタからCSV コネクタ」にフローをつなぎます。
これでBox コネクタで取得(ダウンロード)したCSV ファイルがCSV コネクタでにインプットされ、XML へ変換されるようになります。
MySQL コネクタ
次に「MySQL へUpsert(データを更新)」するMySQL コネクタを設定します。この連携フローのおわり(終点)となるコネクタです。
配置
MySQL コネクタは「データベース」カテゴリに含まれています。「データベース」カテゴリから「MySQL」を選択してフローキャンバスへ配置します。
コネクタID には任意の名称を設定することができます。何を行うコネクタか、分かりやすい名前を設定します。ここでは「MySQL_Product_Upsert」と設定します。
接続の設定
MySQL への接続情報を設定します。
こちらの記事 で作成した「接続」を利用します。「MySQL_Handson」を選択して「接続をテスト」します。
「Success!」と表示されれば成功です。
アクション
MySQL へのアクション(実行操作)を選択します。このコネクタではデータを更新するので「Upsert」を選択します。
テーブル
MySQL へデータをUpsert するテーブルを選択します。「+追加」をクリックして「テーブルの追加」ダイアログを開きます。
「商品」テーブルを選択して「+追加」をクリックします。「テーブル」に「商品」が追加され、「カラム」に「商品」テーブルの列構成が反映されます。ここでは「Upsert の有効化」や「Upsert のKey」を細かく指定することができます。
ここでは、Upsert のKey に「商品コード」を選択します。これで同じ製品コードを持つデータは登録ではなく、既存データの更新として扱われます。
「変更を保存」をクリックして、コネクタの設定を保存します。これでMySQL コネクタの設定は完了です。
XMLMap コネクタ
最後に「Box から取得したCSV ファイルのデータをMySQL の商品テーブルへマッピング」するXMLMap コネクタを設定します。
XMLMap コネクタは、CData Arc の中でも中核的なコネクタです。CData Arc は、データの操作と変換の中間形式としてXML を使用します。多くのコネクタは、さまざまな形式のファイルをXML に、またはその逆に変換します。さらにCData Arc はXML を使用してデータベースやSaaS などバックエンドシステムの入力と出力をモデル化します。この仕組みにより、様々なフォーマットのファイルやデータベース・SaaS などのバックエンドシステムをシームレスにつなぐことができます。
配置
XMLMap コネクタは「コア」カテゴリに含まれています。「コア」カテゴリから「XML Map」を選択してフローキャンバスへ配置します。
コネクタID には任意の名称を設定することができます。何を行うコネクタか、分かりやすい名前を設定します。ここでは「XMLMap_CSV_to_Product」と設定します。
フロー設定
コネクタ間の流れを設定していきます。まず「CSV コネクタからXMLMap コネクタ」にフローをつなぎます。
次に「XMLMap コネクタからMySQL コネクタ」にフローをつなぎます。
これでXMLMap コネクタでは、どのコネクタからインプットされ、どのコネクタへアウトプットするかが理解されるようになります。
ソースファイル・デスティネーションファイル
ここまでの操作で、CSV コネクタでアウトプットされるデータ構造と、MySQL コネクタにインプットされるデータ構造が構成されていますので、マッピングのソースファイル(変換元)とデスティネーションファイル(変換先)にそれぞれ選択して設定します。
ソースファイルとデスティネーションファイルを指定すると、マッピングエディタにデータ構造が反映され、同名項目同士などデフォルトのマッピングが施されます。
マッピング
下記の項目を「ソース」から「宛先」にマッピングします。
ソース |
宛先 |
Code |
商品コード |
Name |
商品名 |
Type |
種別 |
Price |
価格 |
Description |
説明 |
マッピング(式エディタ)
XMLMap コネクタでは、フォーマッタや条件、カスタムスクリプトなどを利用した高度なマッピング機能も利用できます。ここでは「最終更新日時」に「現在日時」を取得してマッピングします。
「最終更新日時」項目の「式」をクリックして、エクスプレッションエディタ(式エディタ)を開きます。
XMLMap の式エディタでは、ArcScript のフォーマッタを利用してマッピング中にデータを動的に編集・加工することができます。ここでは
now フォーマッタを利用して「現在日時」を取得・設定します。
[now()]
CData Arc では設定したマッピングの結果をすぐにテストすることができる「テストマッピング」の機能が搭載されています。フォーマッタを利用して変換や編集をともなうマッピングを施している場合、その結果をすぐにテストできる「テストマッピング」の機能はとても便利です。
「マッピングをテスト」をクリックするとマッピングテストダイアログが表示されます。
「テスト」をクリックすると、マッピングを実行した結果が「宛先」欄に出力されます。マッピングで設定した now() が動的に取得・設定できていることがすぐに確認できます。
「変更を保存」をクリックして、コネクタの設定を保存します。これでXMLMap コネクタの設定は完了です。
フローの実行
これでシナリオの連携フローが完成しました。連携フローを手動で実行するときは、起点のコネクタでデータをアウトプット(受信)します。Box コネクタの「アウトプット」タブで「受信」を実行します。
実行結果の確認
受信に成功(Success)したメッセージファイルは、オートメーションの機構により、後続のCSV コネクタに渡されます(インプットされます)。
CSV コネクタの「インプット」「アウトプット」でBox コネクタから渡されたCSV ファイルがインプットされ、XML に変換された後にアウトプットされていることが確認できます。
XMLMap コネクタの「インプット」「アウトプット」でCSV コネクタから渡されたメッセージファイルがマッピングされ、アウトプットされていることが確認できます。
最後のMySQL コネクタの「インプット」タブで、XMLMap コネクタから渡されたメッセージファイルで指定した処理(Upsert)に成功していることが確認できます。
メッセージファイル名をクリックすると、データ(マッピングされたインプットファイル)を確認することができます。
コネクタ実行履歴の右端に表示される「詳しくはこちら」から、ログページ上で「フローの一連の流れ」として確認することもできます。
MySQL の「商品」テーブルの内容を確認してみます。MySQL Workbench で確認します。
フローの自動実行
CData Arc にはスケジューリング実行するための機能が標準で搭載されています。開発・テストが完了した連携フローを自動で定期的に実行したいときに便利です。スケジュール実行はフローの起点となるコネクタで「受信オートメーション」を有効にすることで設定します。
このシナリオのフローを、1時間に1度、毎時0分に自動実行する場合は、Box コネクタの「オートメーション」タブで下記のように設定します。
ここまでのまとめ
これで「CData Arc ハンズオンセミナー ~はじめてのCData Arc~」の「シナリオ2-2」が完了しました。
シナリオ2-2
この記事では CData Arc™ 2023 - 23.3.8698.0 を利用しています。
関連コンテンツ