CData Software Blog

クラウド連携のCData Software の技術ブログです。

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

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 をMySQLSQL 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 データ(通常はJSONXML)をカラムとレコードを持ったテーブルにモデル化。メタデータの検出・付与までを行います。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

www.cdatablog.jp

www.cdatablog.jp

www.cdatablog.jp

www.cdatablog.jp