AlteryxのDB接続とDSN設定の話

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは、小澤です。

Alteryxでは、ODBCなどを使って、データベースへの接続可能です。 接続を行うにはワークフローが実行される環境にドライバがインストールされている必要がありますが、どのドライバのどの設定を利用するかについては様々な方法があるので今回はその辺りを見ていきたいと思います。

もっとも基本的な設定

さて、もっとも基本的な設定としてMicrosoft SQL ServerへのODBC接続とOracleへのOCI接続があります。 この2つは、Alteryx内部で接続に関する設定を保持しておくことが可能です。

Options > Advanced Options > Manage Data Connections

から登録してあるデータソース一覧を確認することができます。

一番上がMicrosoft SQL Server, その次がOracleへの接続情報となっています。 一番下はこのあと登場するAlteryx ServerのData Connectionsと関連する部分なので、今は気にしなくて大丈夫です。

この情報は接続文字列と名前のkey-value形式になっています。 接続文字列は、利用するドライバや接続先のエンドポイント、ユーザ名、パスワードなどデータベースへの接続を行う際に必要となる情報が記載されたものになります(Alteryx上では、接続ユーザのパスワードは「EncPwd1」のような形式になり、実際の値が表示されることありません)。

実際にデータベースへの接続を行う際には、文字列を使って接続を行いますが、Alteryx上では名前での指定が可能です。

Input Dataツールなどから接続する際は「aka:database1」のように「aka:」に続けて名前を指定します。

DSNを値を指定する

先ほどのやり方では、接続名と接続文字列のkey-valueをAlteryxで管理していました。 これに対して、Windowsが提供するにたような機能を利用することもできます。 アプリケーションの検索から、odbcデータソースを実行します。

起動すると、以下のような画面が表示されるので、ここでユーザDSNやシステムDSNにデータベースへの接続に関する情報を同様にkey-valueで登録できます。

ユーザDSNとシステムDSNの違いは、 ユーザDSNは現在ログインしているユーザのみで有効、システムDSNはこのPCが利用可能なすべてのユーザで有効となります。

ここで設定した値は、Input Dataツールの入力先指定時などで Other Databases > ODBC... を選択することで利用できます。

設定された値は「odbc:DSN=database1」のような、「odbc:DSN=」で始まる形式になります。

接続文字列を直接指定

さて、ここまではいずれも接続名と接続文字列のkey-value形式で指定していました。 これらはAlteryxでは実行時に接続名が接続文字列に置き換えられたのち、実行されます。 そのため、実際の接続の際に利用しているものは接続文字列のみとなります(なお、接続名から接続文字列をうまく引けない時に出るエラーが「Unable to translate alias」となります)。

実際に接続の際に利用するのが接続文字列のみのため、最初からこの値を指定して実行することも可能です。 接続文字列はデータベースの種類によって異なりますが、例えば先ほども利用したMicrosoft SQL Serverの場合だと

odbc:DRIVER={ODBC Driver 13 for SQL Server};UID=<ユーザ名>;PWD=<パスワード>;DATABASE=<データベース名>;SERVER=<サーバのエンドポイント>

のように指定します。 こちらのやりかただと、接続に利用するユーザのパスワードを直書きする必要がある点にはご注意ください。

他の人とワークフローを共有するときは

さて、データベースに接続してデータを取得したり保存したりする方法はご理解いただけたかと思います。 では、このようなワークフローを他者と共有する際にはどのような手続きが必要なのでしょうか?

入出力対象がファイルの場合は、相対パスにしたりyxzpファイルを作成したりで対応できました。

データベースへの接続を行う場合は、

  • ドライバのインストール
  • 接続名と接続文字列の対応関係定義

が実行する環境すべてに定義されている必要があります。 ワークフロー設定では、接続名が記載されているので、すべての環境で同じな名前で同じ接続文字列が定義されている必要があります。 逆に環境によって同じ接続名で異なる接続文字列にすることによって、環境ごとに接続先を変えるといったことも可能です。

また、接続文字列を直接指定してる場合は特に影響ありません。

Alteryx ServerのData Connectionsとの関係性

さて、最後にAlteryx Serverの管理者で設定可能なData Connectionsとの関連性も見ておきましょう。 Alteryx Serverがある環境では、ここで設定したものをDesignerから利用することも可能です。

Alteryx Server上では以下のようなデータコネクションの設定をしています。

ここでの設定には注意点があります。 Alteryx Designerでのデータベース接続設定と合わせて状況ごとにどのような挙動をするか考えてみましょう。

Alteryx Designer内部で接続に関する設定を行っている

Input Dataツールの入力先などに関する設定は、「aka:database1」のようになっている状態です。 この状態であれば、Alteryx ServerのData Connectionsでもdatabase1の設定を行っていれば、問題なく動作します。 また、他の環境にダウンロードしたワークフローも接続先として、ServerのData Connectionsを参照してくれて問題なく動作します。

ODBCデータソースで設定したDSNを利用している

「odbc:DSN=database1」のようになっている状況です。 この場合は、DSNの設定を見にいくので、Alteryx Server上では、Data Connectionsの設定を行っていても正常に動作しません。 Serverが動作している環境のシステムDSNに同様の設定がされている必要があります。

直接接続文字列で指定している

この場合は、どこの環境からでも問題なく動作するでしょう。

Alteryx ServerのData ConnectionsでODBCデータソースの値を利用している

Alteryxではキーの値を多段で引いてくれる機能は無いようなので、Data ConnectionsでODBCデータソースの接続名を指定している場合、 その値に直接アクセスしようとしてしまいます。 そのため、Alteryx DesignerのODBCデータソースで設定してあっても正常に動作しません。

Alteryx Serverを利用している状況では、Alteryx Designerの利用者が複数人いるかと思います。 そういった環境でのデータ接続に関する設定では、すべての利用者に同じ設定をしてもらうのが難しくなるかもしれません。 その際には、Alteryx ServerのData Connectionsで接続先は一元管理してしまう、という運用の仕方でもいいでしょう。

おわりに

今回は、Alteryxのデータベースへの接続の仕組みを解説しました。

Alteryx Serverが絡むとやや複雑な話もなり、実運用ではどのようにやっていけばイメージしづらい方もいるかと思いますが、 仕組みさえ理解してしまえばあとは、比較的考えやすい構造になっています。

Alteryxの導入なら、クラスメソッドにおまかせください

日本初のAlteryxビジネスパートナーであるクラスメソッドが、Alteryxの導入から活用方法までサポートします。14日間の無料トライアルも実施中ですので、お気軽にご相談ください。

alteryx_960x400