Alteryxから CData ODBC Drivers を使って様々なクラウドサービスやNoSQLからデータを取得する方法

# はじめに

## Alteryxとは

Alteryxは、データブレンディングと予測分析を得意としたアナリティクスツールです。ちなみに、呼び方ですが、日本語読みでは「アルタリスク」または「オルタリスク」と呼ぶようです。日本では、クラウドやアナリティクスを得意としている[クラスメソッド](https://classmethod.jp/partner/alteryx/)社がAlteryxの正規代理店となっています。私もこの記事を書くのに[Developer.I.O](https://dev.classmethod.jp/business/business-analytics/alteryx-all-tools-and-datasources/)を参考とさせて頂きました。


## CData ODBC Driversとは

 一言でいうと、下記のような約90種類以上のクラウドサービス・RDB・NoSQL・ファイルのデータをSQLで操作できるODBCドライバ製品群です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/c144c3ca-1b49-9088-9da2-1333f4a791f5.png)
製品の詳細は[CData SoftwareのWebサイト](http://www.cdata.com/jp/odbc/)をご覧ください。

# AlteryxとCData ODBC Driverを両方使うことでできること

## 利用イメージ

Alteryxはデータブレンディング、すなわち、多種多様なデータソースを組み合わせて利用することに特化したツールです。Alteryx自体、多種多様なデータソースに対応しています。他のアナリティクス系の製品と密に連携できるようなデータソース（TableauなどのBIツール、SPSSなどの統計解析ツール、Redshift,VerticaやNetezza）が充実しています。対応データソースについては、[Alteryxで何が出来るのか – 実行可能タスク全197種 概要紹介&リファレンスまとめ #alteryx](https://dev.classmethod.jp/business/business-analytics/alteryx-all-tools-and-datasources/)の記事にまとまっています。また、Alteryxは、これらのネイティブで接続できるデータソースの他に、ODBC規格のデータソースであれば連携できるようになっています。ということは、CData ODBC Drivers製品をODBCのコネクタとして使用することで、Alteryxがネイティブでは対応していない、SalesoforceやkintoneといったSaasやMongoDBやCassandra、RedisといったNoSQLからデータを取得できるようになります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/c5304658-3f8d-e1dc-1c4f-32478fd2205d.png)

## 出来ること
一般的に、データの分析業務の7割（人によって6割～8割とか言われるようです）はデータの前準備（データプレパレーション）だと言われています。この中で大変なのは、インタフェースが異なるデータソースを収集するところですので、これが、ODBCという統一規格で取得でき、Alteryxというデータブレンディングに特化したツールを用いることでデータの前処理にかかる労力を大幅に削減でき分析のトライ＆エラーをサイクルを高めることができます。

# 実際にAlteryxでSalesforceからデータを取得してみる

## 前提として必要なアプリ- サービス

- [Alteryx](https://www.alteryx.com/)がインストール済であること
- [Salesforce](https://www.salesforce.com/jp/)アカウントを取得済であること
- [CData Salesforce ODBC Driver](http://www.cdata.com/jp/drivers/salesforce/download/odbc/)　※30日間利用可能な無償評価版あり

## Salesforceのセキュリティトークンの取得

[Salesforce](https://www.salesforce.com/jp/)にログインして、［私の設定］->［個人用］->［私のセキュリティトークンのリセット］を開き「セキュリティトークンのリセット」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/3fe26ace-74d6-f413-5219-e48f02a8ae7e.png)
メールで送られたセキュリティトークンを控えておきます。

## CData Salesforce ODBC DriverのインストールとODBCのDSN設定

[CData Salesforce ODBC Driver](http://www.cdata.com/jp/drivers/salesforce/download/odbc/)をダウンロードします。ダウンローしたExe形式のインストーラを起動して、EULAの内容を確認したうえでデフォルトの内容でインストールします。
※ 途中オンラインアクティベーションが行われるため、インターネットに接続できる環境である必要があります。

インストールが完了したら、WindowsのODBC データアドミ二ストレータを開きます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/52927bee-d981-8c8f-4afa-f0d66c5491b1.png)
32bit用と64bit用があるのでマシン環境にあった方をお選びください。ユーザデータソース内に、「CData Salesforce Source」が作成されていることを確認してダブルクリックで開きます。DSN設定画面が立ち上がるので、User、PasswordにはSalesforceへログインするときのユーザ、パスワードをセットし、SecurityTokenには、先の手順で取得したセキュリティトークンをセットします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/085e725f-799c-8c59-c51c-563d7edd65f2.png)
「接続テスト」ボタンをクリックして接続が成功した旨のダイアログが表示されれば成功ですのでDSN情報を保存してODBC データアドミ二ストレータを閉じてください。
※セキュリティトークンでの認証ではなくOAuthを使用することも可能です。詳しくは[こちら](http://cdn.cdata.com/help/GFC/odbc/pg_connectingtosalesforcexls.htm)をご覧ください。

## AlteryxからODBCドライバの利用

Alteryx Designerを起動して新しいWorkFlowを作成します。「In/Out」タブ内の「Input Data」アイコンをパレットにドラッグ＆ドロップで配置します。左側のConfigurationにて、データソースの種類を選択できるので「Other Dataases > ODBC....」を選択します。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/8fcf5c29-8266-98fe-b079-c5e642d2675f.png)
「ODBC Connection」ダイアログが表示されるので、ODBCのシステムDSNとユーザDSNが表示されますので上記手順で設定したSalesforceのDSNを選択して「OK」ボタンをクリックします。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/dcd1ac54-dcd5-fa74-9fe7-e2fbe31810d7.png)
「Choose Table or Specify Query（テーブルの選択かクエリーの定義）」ウィンドウが立ち上がります。「Visual Query Builder」機能を使うと、Salesforceの各オブジェクトがテーブルとして左側に並びますのでデータを取り込みたいテーブル（画面の例では「Opportunity(商談)」）を選択してペインにドラッグすることでSQLを書かずに必要なデータを選ぶことができます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/483fd68b-23f4-0844-77e5-d63cb1a17d90.png)
なお、「SQL Builder」タブで、直接SQLを記述して「Test Query」ボタンで結果を参照することもできます。ことで記載できるSQLは、CData ODBC Drivers製品はANSIのSQL92準拠のSQLをサポートしていますので、JOIN（テーブル間結合）やWHERE（絞り込み）、OrderBY（並び替え）、GroupBY（集計）が可能です。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/8f79cc48-d442-9b0d-f561-295d67c7432d.png)
「OK」ボタンをクリックしてWorkFlow全体の画面に戻ります。このInputDataの中身をブラウズする「Browse」アイコンをパレットにドラッグ＆ドロップします。すると、先の「Input Data」のアイコンから矢印でつながります。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/ea9f40e6-5f70-b5e9-12a7-b0a6b6a212fe.png)
それでは、メニュー下の再生アイコン「Run WorkFlow」ボタンをクリックして実行してみましょう。
処理が終了すると、右下にデータの内容が表示されます、データのヘッダーをクリックすると左側に、そのデータ項目の値の分布やNULLや欠落値の含む割合、最小値、最大値、平均といった様々な情報が取得できます。実際のデータプレパレーション業務では、この値を見ながら異常値を取り除いたり、新たなカテゴリを生成したりすることで、この後の分析業務をスムーズなものにすることが出来ます。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/b31d8b4c-329e-61e0-4ab7-15b7dbf59c66.png)

今回は検証してませんが、Alteryxは「Output Data」アイコンでもODBC接続できるようなので、作成した分析用データをSaasやNoSQLに格納するWorkFlowも作成することも出来そうです。この辺は次回検証してみたいと思います。
![image.png](https://qiita-image-store.s3.amazonaws.com/0/123181/88f12e5d-62a3-1e68-80a5-305129228c2b.png)



# まとめ

AlteryxからCData ODBC Driver経由でSalesofrceのデータを取得する例をご紹介しましたが、Salesforceだけでなく、CData ODBC Drivers製品が対応している他のSaasやNoSQLといった約90のデータソースにも同じ手順で接続することが出来ます。Alteryxから呼び出すことで分析に利用できるソースが大幅に増えて手軽に利用できる環境を整えることによって分析の幅は大幅に広がると思います。Alteryx、および、CData ODBC Drivers製品をお試しいただける無償評価版があるので是非お試しください。

- [Alteryx評価版](https://classmethod.jp/partner/alteryx/?utm_source=developersio) (14日間) ※クラスメソッド社より申し込み可能
- [CData ODBC Drivers製品の評価版](http://www.cdata.com/jp/odbc/) (30日)

# （ご参考）Alteryxからの接続KB

CRM & Marketing
- [Salesforce](https://www.cdata.com/jp/kb/tech/salesforce-odbc-alteryx.rst)
- [DynamicsCRM](https://www.cdata.com/jp/kb/tech/dynamicscrm-odbc-alteryx.rst)
- [Sugar CRM](https://www.cdata.com/jp/kb/tech/sugarcrm-odbc-alteryx.rst)
- [SuiteCRM](https://www.cdata.com/jp/kb/tech/suitecrm-odbc-alteryx.rst)
- [Zoho CRM](https://www.cdata.com/jp/kb/tech/zohocrm-odbc-alteryx.rst)
- [Google Analytics](https://www.cdata.com/jp/kb/tech/ganalytics-odbc-alteryx.rst)
- [Google AdWords](https://www.cdata.com/jp/kb/tech/adwords-odbc-alteryx.rst)
- [Marketo](https://www.cdata.com/jp/kb/tech/marketo-odbc-alteryx.rst)
- [Oracle Sales Cloud](https://www.cdata.com/jp/kb/tech/oraclesalescloud-odbc-alteryx.rst)
- [Eloqua](https://www.cdata.com/jp/kb/tech/eloqua-odbc-alteryx.rst)
- [SendGrid](https://www.cdata.com/jp/kb/tech/sendgrid-odbc-alteryx.rst)
- [youtube](https://www.cdata.com/jp/kb/tech/youtube-odbc-alteryx.rst)
- [Bing Ads](https://www.cdata.com/jp/kb/tech/bingads-odbc-alteryx.rst)
- [HubSpot](https://www.cdata.com/jp/kb/tech/hubspot-odbc-alteryx.rst)

ERP
- [Dynamics365](https://www.cdata.com/jp/kb/tech/dynamics365-odbc-alteryx.rst)
- [DynamicsNAV](https://www.cdata.com/jp/kb/tech/dynamicsnav-odbc-alteryx.rst)
- [NetSuite](https://www.cdata.com/jp/kb/tech/netsuite-odbc-alteryx.rst)
- [SAP NetWeaver](https://www.cdata.com/jp/kb/tech/sap-odbc-alteryx.rst)

Collaboration & Mail
- [sharepoint](https://www.cdata.com/jp/kb/tech/sharepoint-odbc-alteryx.rst)
- [Office 365](https://www.cdata.com/jp/kb/tech/office365-odbc-alteryx.rst)
- [Box](https://www.cdata.com/jp/kb/tech/box-odbc-alteryx.rst)
- [Google Calendar](https://www.cdata.com/jp/kb/tech/googlecalendar-odbc-alteryx.rst)
- [Google Contacts](https://www.cdata.com/jp/kb/tech/googlecontacts-odbc-alteryx.rst)
- [Google Drive](https://www.cdata.com/jp/kb/tech/googledrive-odbc-alteryx.rst)
- [Google Directory](https://www.cdata.com/jp/kb/tech/googledirectory-odbc-alteryx.rst)
- [Gmail](https://www.cdata.com/jp/kb/tech/gmail-odbc-alteryx.rst)
- [Exchange](https://www.cdata.com/jp/kb/tech/exchange-odbc-alteryx.rst)
- [Active Directory](https://www.cdata.com/jp/kb/tech/activedirectory-odbc-alteryx.rst)
- [ServiceNow](https://www.cdata.com/jp/kb/tech/servicenow-odbc-alteryx.rst)
- [kintone](https://www.cdata.com/jp/kb/tech/kintone-odbc-alteryx.rst)
- [JIRA](https://www.cdata.com/jp/kb/tech/jira-odbc-alteryx.rst)
- [Twilio](https://www.cdata.com/jp/kb/tech/twilio-odbc-alteryx.rst)

NoSQL & Big Data
- [DynamoDB](https://www.cdata.com/jp/kb/tech/dynamodb-odbc-alteryx.rst)
- [BigQuery](https://www.cdata.com/jp/kb/tech/bigquery-odbc-alteryx.rst)
- [redis](https://www.cdata.com/jp/kb/tech/redis-odbc-alteryx.rst)
- [Redshift](https://www.cdata.com/jp/kb/tech/redshift-odbc-alteryx.rst)
- [Cassandra](https://www.cdata.com/jp/kb/tech/cassandra-odbc-alteryx.rst)
- [Elasticsearch](https://www.cdata.com/jp/kb/tech/elasticsearch-odbc-alteryx.rst)
- [MognoDB](https://www.cdata.com/jp/kb/tech/mongodb-odbc-alteryx.rst)
- [Cosmos DB](https://www.cdata.com/jp/kb/tech/cosmosdb-odbc-alteryx.rst)
- [Cloudant](https://www.cdata.com/jp/kb/tech/cloudant-odbc-alteryx.rst)
- [HBase](https://www.cdata.com/jp/kb/tech/hbase-odbc-alteryx.rst)
- [Apatch Spark](https://www.cdata.com/jp/kb/tech/spark-odbc-alteryx.rst)
- [Couchbase](https://www.cdata.com/jp/kb/tech/couchbase-odbc-alteryx.rst)

SNS
- [Twitter](https://www.cdata.com/jp/kb/tech/twitter-odbc-alteryx.rst)
- [Facebook](https://www.cdata.com/jp/kb/tech/facebook-odbc-alteryx.rst) 
- [Instagram](https://www.cdata.com/jp/kb/tech/instagram-odbc-alteryx.rst)
- [LinkedIn](https://www.cdata.com/jp/kb/tech/linkedin-odbc-alteryx.rst)
- [Salesforce Chatter](https://www.cdata.com/jp/kb/tech/chatter-odbc-alteryx.rst)

Document
- [GoogleSpreadSheet](https://www.cdata.com/jp/kb/tech/gsheets-odbc-alteryx.rst)
- [JSON](https://www.cdata.com/jp/kb/tech/json-odbc-alteryx.rst)
- [XML](https://www.cdata.com/jp/kb/tech/xml-odbc-alteryx.rst)

Financial
- [Square](https://www.cdata.com/jp/kb/tech/square-odbc-alteryx.rst)
- [PayPal](https://www.cdata.com/jp/kb/tech/paypal-odbc-alteryx.rst)
- [Stripe](https://www.cdata.com/jp/kb/tech/stripe-odbc-alteryx.rst)

Search Engine
- [Google Search](https://www.cdata.com/jp/kb/tech/googlesearch-odbc-alteryx.rst)
- [Bing Search](https://www.cdata.com/jp/kb/tech/bingsearch-odbc-alteryx.rst)