CData Software Blog

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

Alteryx を使って Azure Analysis Servciceの集計結果をロードする

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

今回は Alteryx を使って、Azure Analysis Servciceのデータをロードする方法を紹介します。

Alteryx とは?

Alteryx アナリティクス・データプレパレーション用のツールです。

https://www.alteryx.com/ja

f:id:sugimomoto:20200813140622p:plain

以下のようなGUIベースで様々なデータソースからデータを集約し、アナリティクスにつなげるためのクレンジングや集計、項目調整といったデータ処理を実装することができます。

f:id:sugimomoto:20200813140632p:plain

ちなみに 以前 CData Driverとの組み合わせ記事を Qiita で掲載しているので、こちらも参考にしてみてください。

qiita.com

Azure Analysis Servcice とは?

SQL Server Analysis Serviceをベースとした Azure PaaS で提供されている分析データエンジンです。

docs.microsoft.com

この記事のシナリオ

今回はこのAzure Analysis ServiceとAlteryxを組み合わせてデータプレパレーションを行います。

なお、Alteryxは以下のように様々なデータソース・RDBやDWHからのデータ取得をサポートしていますが、現在Azure Analysis Serviceには接続できません。

f:id:sugimomoto:20200813140641p:plain

しかしながら、ODBCの標準インターフェースが使えるので、このボトルネックを CData Azure Analysis Services ODBC Driver を利用して解決します。

https://www.cdata.com/drivers/azureanalysisservices/odbc/

f:id:sugimomoto:20200813140650p:plain

手順

それでは実際に接続する手順を紹介していきたいと思います。

必要なもの

必要なものは以下のとおりです。すべてトライアルが提供されているので、とりあえず試してみることが可能です。

  • Alteryx Designer (こちら でトライアルを取得できます。)
  • Azure Account
  • CData Azure Analysis Services ODBC Driver

Azure Analysis Servciceの構成

まず最初に Azure Analysis Servcice を構成してみましょう。

Azure Portalにログインして、新しいリソースとして Analysis Servcice を構成します。

f:id:sugimomoto:20200813140709p:plain

構成に必要な Server nameなどは任意のものを選択してください。

今回は検証用途のため、Pricing tierは一番低いD1を選択しました。なお、Administratorは後ほど認証時に利用するので間違えないようにしましょう。

f:id:sugimomoto:20200813140714p:plain

構成後、ServerNameが表示されるので、この値を控えておきます。後ほどODBC設定の部分で使用します。

f:id:sugimomoto:20200813140719p:plain

なお、今回はテストデータとして、Azure Analysis Servcice が標準で提供する Sample Dataを使用します。「+ New Model」をクリックし

f:id:sugimomoto:20200813140725p:plain

「Sample Data」を選んで追加します。

f:id:sugimomoto:20200813140731p:plain

以下のようにAdventureworksのモデルが追加されればOKです。

f:id:sugimomoto:20200813140735p:plain

また、デフォルト状態ではFirewallが有効化されていないので、セキュリティのために有効化しておきましょう。

f:id:sugimomoto:20200813140741p:plain

Azure Analysis Servcice ODBC Driverの準備

次に、Azure Analysis Servcice ODBC Driverをインストールしています。以下のURLからBeta版をダウンロードして、インストールを行ってください。

https://www.cdata.com/drivers/azureanalysisservices/odbc/

f:id:sugimomoto:20200813140747p:plain

インストール後、ODBC DSNの構成画面が立ち上がるので、「URL」のプロパティに先程構成した Azure Analysis Servciceの Server Nameを入力し、「Test Connection」をクリックします。

f:id:sugimomoto:20200813140752p:plain

Test Connectionをクリックすると、ブラウザが立ち上がり、Azureへのログインが求められます。ここで予め Azure Analysis Servciceの Admin Userとして指定したユーザーでログインしましょう。

f:id:sugimomoto:20200813140757p:plain

ログインが完了すると、アクセス許可の画面が出てくるので、内容を確認し「承諾」をクリックします。

f:id:sugimomoto:20200813140802p:plain

承諾後、以下のようにメッセージが表示されればOKです。

f:id:sugimomoto:20200813140816p:plain

あとは設定を保存するだけで、ODBCの準備は完了です。

Alteryx Designer でワークフローを構成

それでは、Alteryx Designer でワークフローを構成していきましょう。

Alteryx では外部からのデータの取り込みに「Input Data」という機能を使います。Alteryx Designer を立ち上げたら、まずこの「Input Data」を配置します。

f:id:sugimomoto:20200813140826p:plain

配置後、「Connect a File or Database」のプルダウンボタンをクリックして

f:id:sugimomoto:20200813140840p:plain

「Data sources」を選択します。

f:id:sugimomoto:20200813140847p:plain

ここで取り込みたい外部のRDBやDWHのサービスを選択します。前述の通り、Azure Analysis Servciceは提供されていないので、標準のODBCインターフェースを用います。

一覧の中から「Generic Connection」のODBCを選択してください。

f:id:sugimomoto:20200813140855p:plain

ODBC Connectionを選択すると、以下のようにDSNの選択画面が表示されるので、ここで先程構成したODBC DSNを選択し、「OK」をクリックします。

f:id:sugimomoto:20200813140901p:plain

続いて、データ取得のクエリを記述します。

Azure Analysis Servciceからのデータ取得は若干特殊なため、SQL Editorを使います。

f:id:sugimomoto:20200813140913p:plain

ここで少し CData Azure Analysis Servcice の機能について解説します。

なお、詳しくはヘルプに含まれる以下のページも参照してみてください。

Retrieving Analysis Services Data Azure Analysis Services is an OLAP database that exposes data as cubes,

f:id:sugimomoto:20200813140921p:plain

CData Azure Analysis Servcice Driver はCubeやMeasureなどの要素を以下のように Driverの機能としてマッピングして提供します。

  • Catalog - Displayed in the driver as a Catalog.
  • Cube - Displayed in the driver as a Schema.
  • Measure - Available in the driver under the special Measures view.
  • Dimension - Each dimension is exposed as a view.
  • Level - Each individual level of a hierarchy is exposed as a column on the appropriate dimension view.

この構成要素は ODBC DSNの画面で、「Tables」のタブを使うとわかりやすいです。

f:id:sugimomoto:20200813140929p:plain

ここで今回ポイントとなるのは、メジャーとディメンションがそれぞれ別なビューとして定義され、提供されるということです。

Tableとして標準的に提供されるものは、そのまま CData Driverでも個別のテーブル(ビュー)として、定義されますが、このテーブルにはメジャーとなる数値などの項目は含まれません。

f:id:sugimomoto:20200813140937p:plain

では、どのように提供されているのか? というと、以下のように「Measures」というビューで独自に定義され、クエリできるようになっています。

f:id:sugimomoto:20200813140942p:plain

そのため、最終的にSQLベースでAzure Analysis Servciceからデータを取得したい場合、CData Driverでは基本的にこの「Measures」と各ディメンションのテーブルをJOINして、結果を取得するようになっています。

例えば、Customerテーブルに含まれる「Gendar(性別)」ごとの、「Internet Total Sales」の集計を見たい場合、以下のように Customerテーブルに対して、MeasuresテーブルをJOINして、必要となる項目をSELECTし、集計結果を取得します。

SELECT m."Internet Total Sales", c."Gender"
FROM "adventureworks"."Model"."Customer" c
INNER JOIN "adventureworks"."Model"."Measures" m;

これをAlteryxでも同じ様に、SQL Editorを使って以下のように指定します。

f:id:sugimomoto:20200813140948p:plain

記述したら、実際にデータを取得してみましょう。一度「Run」ボタンをクリックして、「Input data」の処理結果を見てみると、以下のようにGenderごとの集計結果を得られていることがわかります。

f:id:sugimomoto:20200813140956p:plain

このように、CData Azure Analysis Servcice Driver のクエリ特性を理解して、SQLを記述する必要があるので、注意しましょう。

もしヘルプでもわからない、こんなクエリを書きたい場合はどうすればいいのか? といった点がありましたら、サポートフォームまでご連絡ください。

クエリできることが確認できたら、あとは出力を作成します。

今回は単純にExcelファイルに集計結果を出してみたいと思います。

「Output Data」を配置して

f:id:sugimomoto:20200813141005p:plain

「プルダウン」ボタンをクリックします。

f:id:sugimomoto:20200813141010p:plain

Filesの一覧から「Microsoft Excel」を選択し、任意のフォルダ・ファイル名を指定します。

f:id:sugimomoto:20200813141015p:plain

これで構成は完了です。再度「Run」をクリックしてみましょう。

f:id:sugimomoto:20200813141025p:plain

正常に処理が完了とすると、以下のようにExcelファイルが生成されます。

f:id:sugimomoto:20200813141033p:plain

中身を見てみると、正常にAzure Analysis Servcice から取得したデータをロードできていました。

f:id:sugimomoto:20200813141037p:plain

おわりに

CData では、 Azure Analysis Servcice Driver以外にも、200種類以上のデータソースに接続できるODBC Driverを提供しています。

今回のようなアナリティクス用のサービスだけでなく、HubSpotやkintone、SansanといったSaaSにも接続できるODBCも提供しているので、是非社内で利用しているサービスに合わせて、Alteryxと一緒に活用してみてください。

f:id:sugimomoto:20200813141044p:plain