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

by 杉本和也 | 2020年11月05日

f:id:sugimomoto:20201105132107p:plain

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

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

f:id:sugimomoto:20201105112754p:plain

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 などいろいろなデータをサポートしています。

f:id:sugimomoto:20201105112804p:plain

とはいえ、今回取り上げるような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/

f:id:sugimomoto:20201105112812p:plain

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

www.cdatablog.jp

CData Connect にElasticsearch データを接続

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

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

f:id:sugimomoto:20201105112858p:plain

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

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

f:id:sugimomoto:20201105112906p:plain

データソース接続画面が開くので、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を指定します。事前に生成されたパスワードを指定ください。

f:id:sugimomoto:20201105112923p:plain

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

f:id:sugimomoto:20201105112931p:plain

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

f:id:sugimomoto:20201105112937p:plain

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

f:id:sugimomoto:20201105112945p:plain

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

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

f:id:sugimomoto:20201105112953p:plain

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

f:id:sugimomoto:20201105113001p:plain

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

f:id:cdatasoftware:20201014212922p:plain

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

f:id:cdatasoftware:20201014212650p:plain

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

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

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

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

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

f:id:sugimomoto:20201105113009p:plain

任意のタスク名を入力し

f:id:sugimomoto:20201105113020p:plain

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

f:id:sugimomoto:20201105113026p:plain

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

f:id:sugimomoto:20201105113032p:plain

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

f:id:sugimomoto:20201105113039p:plain

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

f:id:sugimomoto:20201105113046p:plain

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

f:id:sugimomoto:20201105113054p:plain

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

f:id:sugimomoto:20201105113103p:plain

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

f:id:sugimomoto:20201105113118p:plain

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

f:id:sugimomoto:20201105113147p:plain

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

f:id:sugimomoto:20201105113153p:plain

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

f:id:sugimomoto:20201105113159p:plain

これで準備が完了です。

f:id:sugimomoto:20201105113206p:plain

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

f:id:sugimomoto:20201105113219p:plain

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

f:id:sugimomoto:20201105113227p:plain

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

f:id:sugimomoto:20201105113233p:plain

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://www.cdata.com/jp/blog/2020-10-14-215935

www.cdatablog.jp

www.cdatablog.jp

www.cdatablog.jp

関連コンテンツ

トライアル・お問い合わせ

30日間無償トライアルで、CData のリアルタイムデータ連携をフルにお試しいただけます。記事や製品についてのご質問があればお気軽にお問い合わせください。