こんにちは。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を参照してみてください。
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 から利用が可能です。是非、お試しください。