Azure Data Factory の 連携先サービスを CData Connect で拡張:Elasticsearch 編

by 杉本和也 | November 5, 2020

こんにちは。CData Software Japan リードエンジニアの杉本です。

今日は Azure のデータ統合サービスである Azure Data Factory と CData Connect を連携し、ElasticsearchのデータをAzure SQLに取り込む方法を紹介したいと思います。

CData Connect とは?

CData Connect は、SaaS ベースで提供されるデータハブサービスです。Salesforce、NetSuite、Dynamics、Marketo、kintone など多様なSaaS、ElasticsearchやMongoDBなどのNoSQL・データストアにBI、アナリティクス、iPaaS、ノーコード開発プラットフォームからアクセスするための仮想エンドポイントです。

連携方法が異なるSaaS や NoSQL をMySQL、SQL Server、OData の3種類のインターフェースに仮想化することで、データ連携をシンプルに実現します。

"SQL as a Service" といっていいかもしれません。

Azure Data Factory へのSaaS データ連携

Azure Data Factory は、Azure SQLやDynamics 365、BigQuery や Snowflake などいろいろなデータをサポートしています。

とはいえ、今回取り上げるようなElasticsearchやKintoneやSansanといったSaaSなど、対応していないデータソースも数多く存在します。

この不足をCData Connect を活用してカバーすることが可能です。

今回はエンタープライズサーチサービスとして有名なElasticsearchをAzure Data Factory経由でRDB(Azure SQL)に取り込む方法をベースにCData Connectの使い方を解説します。

CData Connect を使うポイント

  • Azure Data Factoryが持つ汎用のAPIプロトコルである、ODataを活用。この1つのコネクタでSalesforce でも Kintone でもElasticsearch でもCData Connect がサポートするコネクタに同じインターフェースでつなぐことができます。

  • CData Connect がSaaS データ(通常はJSON やXML)をカラムとレコードを持ったテーブルにモデル化。メタデータの検出・付与までを行います。Elasticsearch やkintone のようにカスタムオブジェクト・NoSQLの構造を持つデータソースでもメタデータの動的検出を行います。

これによりデータ加工なしで分析にすぐ利用できるデータとしてAzure Data Factory に渡します。

Elasticsearch の準備

まず対象のElasticsearchの環境を準備します。

今回はElasticCloudを使って、Azureに環境を構築しました。

https://www.elastic.co/jp/elasticsearch/

詳しい環境構築方法は以下のBlogを参照してみてください。

www.cdatablog.jp

CData Connect にElasticsearch データを接続

続いて、CData Connect で Elasticsearchが利用できるように準備をします。

CData Connect (旧CloudHub) のアカウントを取得します。CData Connect はSaaS ですので、アカウントを取得したらインストールやホスティングなどなく、ブラウザからログインすることですぐに使用開始できます。

早速ブラウザからCData Connect にログインします。まず最初に「DATABASE」タブから仮想データベースを設定していきます。

接続するデータソースである Elasticsearch のアイコンをクリックします。

データソース接続画面が開くので、Connection stringを選択し以下のような接続文字列を入力します。

例:Server=https://XXX.eastus2.azure.elastic-cloud.com;Port=9243;User=elastic;Password=XXXX;

プロパティ名 備考
Server https://XXX.eastus2.azure.elastic-cloud.com ElasticCloudのServer URLを指定します。
Port 9243 Elastic CloudのPort番号を指定します。デフォルトは9243です。
User elastic APIアクセス用のUserIdを指定します。Elastic Cloudではデフォルトがelasticになっています。
Password YOUR_PASSOWRD APIアクセス用のUser Passwordを指定します。事前に生成されたパスワードを指定ください。

接続設定が完了したら、次にODataエンドポイントでElasticsearchのデータソースが利用できるようにするための設定を行います。「ODATA」タブから「Add Tables」をクリックし

先程構成したElasticsearchのコネクションを選択します。

次に、対象のデータを指定します。事前にKibanaで作成したデータを選びました。

最後に、どのカラムをODataで公開するかを選択します。ElasticsearchはNoSQLでデータが管理されていますが、CData ConnectはAzure Data Factoryで扱いやすい形式に自動でフラット化して、コネクション化します。

ここで必要なカラムを選択しましょう。

あとはAPIの画面に移動することで、生成されたODataエンドポイントを確認できます。

必要があればアクセスを許可する信頼されたIP アドレスを指定することも可能です。

最後に公開したデータにアクセスできるユーザーとトークンを作成します。「USERS」タブからユーザーを作成するとトークンが生成されます。

これでCData Connect で Elasticsearch データを扱う準備ができました。

Azure Data Factory で Copy Data のパイプラインを構成する

それでは、実際にAzure Data FactoryでElasticsearchを使ったパイプラインを構成してみましょう。

今回はCopy Dataのパイプラインを使って、ElasticsearchのデータをAzure SQLにレプリケーションします。

まずAzure Data Factoryの画面に移動し「Copy Data」をクリックします。

任意のタスク名を入力し

データソースを選択します。「Create new connection」をクリックして

ODataサービスを選択しましょう。

ここで対象のServie URLやUser Name・Passwordを入力します。

Servie URLには、CData ConnectのBase URLを指定します。UserName・Passwordは事前に生成したものを使用します。

生成したコネクションを選択して、次の画面に移動します。

対象のデータセットを選択します。ここで予め構成したElasticsearchのテーブルを選択しましょう。下のプレビューでもデータの内容を確認できます。

次にコピー先となるコネクションを選択します。今回は予め構成していたAzure SQLのコネクションを使用しました。

今回は新しくテーブルを生成するので、任意のテーブル名を入力します。

最後にマッピングです。今回は新しくテーブルを作成するので、そのまま素直にすべての項目をマッピングしましたが、ユースケースに合わせて調整してください。

Settingsはデフォルトのままで進めます。

これで準備が完了です。

バリデーションに問題がなければ、Pipelineの画面に移動し

実際に実行してみましょう。

正常に実行が完了すると、Azure SQL上にテーブルが生成されて、データが登録できていることを確認できます。

CData Connect の利用記事

CData Connect は、他にもSAP Analytics Cloud、Amazon QuickSight、Google Data Studio など多くのNoCode サービス、クラウドBI、iPaaS から利用が可能です。是非、お試しください。

www.cdatablog.jp

www.cdatablog.jp

www.cdatablog.jp

www.cdatablog.jp

https://jp.cdata.com/blog/2020-10-14-215935

www.cdatablog.jp

www.cdatablog.jp

www.cdatablog.jp