DSN レス接続のパターンと特徴 #Alteryx

2023.07.07

Alteryx での ODBC データソースを使用したデータベースへの接続にあたり、DSN を使用する方法と、DSN レス接続があります。DSN レス接続の方法はいくつかあるので、それぞれの特徴をまとめておきたく記事としました。

ODBC データソースと DSN の利用

前提として、Alteryx では、ODBC を使用するデータベース接続が可能です。

このためには、対応するデータベース製品のドライバを各クライアント端末にインストールし、DSN(Data Source Name)を構成することが一般的かと思います。Alteryx からは、ワークフロー上のツールから構成済みの DSN を指定することで、ODBC から対象のデータソースに接続します。

下図はデータ入力ツールの設定画面です。odbc:DSN=mysql-uni と記述がある部分より、この接続は、ODBC 接続を使用しmysql-uni という DSN を指定していることがわかります。

また、DSN は以下の名称を指します。

これは、アプリケーションが ODBC データ ソースへの接続を要求するために使用する名前です。つまり、ODBC 接続を表す記号名です。ODBC に接続するときに、データベース名、ディレクトリ、データベース ドライバー、ユーザー ID、パスワードなどの接続の詳細が保存されます。

DSN (データソース名) とは何ですか? | Microsoft サポート

接続に使用する情報(データベース ドライバー、ユーザー名、パスワードなど)がまとめて保存されており、呼び出せるという特徴があるので、データソースへの接続を行うワークフローを個人単位で利用する際は、DSN を利用しても特段問題はないのですが、DSN を利用するワークフローを他の端末で実行したい場合(他のユーザーと接続を共有したい場合)、その別端末上でも同様の DSN を構成する必要があります。

各ユーザー端末で、正しく設定ができていないと、データソースに接続できない可能性があります。

そこで、DSN をあえて利用しない、DSN レス接続によるデータソースへの接続を行う場合もあり、Alteryx でも DSN レス接続を使用することが可能です。

DSN レス接続

接続文字列

DSN には、接続に使用するデータベース ドライバー、データベースホスト、ユーザー名、パスワードなどが保存されているので、DSN レス接続では、このような接続情報を接続文字列として与えます。

接続文字列はデータソースごとに異なる場合があります。以下に例を記載します。

  • Snowflake の例
odbc: DRIVER={Simba Snowflake ODBC Driver}; SERVER={XXXXX.snowflakecomputing.com}; UID={ユーザー名}; WAREHOUSE={ウェアハウス}; ROLE={ロール}; AUTHENTICATOR={snowflake}; PWD={パスワード};

参考:Using DSN-less ODBC Connections from Alteryx and other software to the Snowflake Data Cloud

  • MySQL の例
odbc:DRIVER={MySQL ODBC 8.0 Unicode Driver};server={エンドポイント};database={データベース};USER={ユーザー名};PASSWORD={パスワード};

{DRIVER}についても、異なるドライバを使用する際は、その名称を指定します。接続文字列の記述は、以下が参考になります。

ConnectionStrings.com - Forgot that connection string? Get it here!

DSN レス接続の設定

Alteryx における DSN レス接続の方法として、以下があげられます。

  • データソースに接続するツール(データ入力ツールなど)設定上に直接、接続文字列を記述する
  • データ接続の管理を使用する
  • In-DB 接続の管理を使用する
  • DCM を使用する

それぞれみていきます。

ツール設定上に接続文字列を記述する

データ入力ツールやデータ出力ツールの接続欄には、直接、接続文字列を記述することができます。下図では、データ入力ツールの接続欄に上記の例で記載した MySQL への接続情報文字列を記述しています。

この場合、はじめにパスワードを直接接続欄に記載する必要があります。一度入力すると「EncPwd1」のように表示され、平文で表示されることはありません。

ワークフロー(ツール)に接続情報があるので、データ入力/出力ツールであれば、以下の点に注意すれば、ワークフローを共有することで他の端末からもデータソースへの接続が可能です。

  • 共有先の端末からデータソースにアクセス可能であること
    • ファイアウォールなど
  • 共有先の端末にも同じドライバがインストールされていること
    • ドライバがインストールされていない場合、以下のようなエラーが表示されます

データ接続の管理を使用する

Alteryx Designer の「オプション > 詳細オプション 」よりデータ接続管理のメニューを開くことができます。こちらは通常のデータ入力/出力ツールで使用できる接続情報の管理に使用できる機能です。

「接続の追加 > その他」より接続文字列を直接記述するデータ接続を作成することができます。

この際、DSN を使用する接続文字列を記述することもできるので、この場合は DSNレス接続とならない点にご注意ください。下図の場合、上段が接続文字列を直接記述しているDSN レス接続です。下段のodbc:DSN=Snowflake DSN という接続文字列は、ODBC データソースで作成済みのSnowflake DSN という名称の DSN を指定しています。

ここで作成した接続情報は、Alteryx 上に保存されることになります。データ入力ツール・データ出力ツールからこの接続を利用可能で、データ接続ウィンドウの「保存済み」より選択可能です。

ツール上は、以下のようにakaからはじまる接続情報となります。

直接接続文字列を記述する必要がありますが、一度作成した接続情報を後ほど呼び出すことができる点は、直接ツールに記述する方法にない特徴と思います。

データ接続の管理 | Alteryx Help

Alteryx Server との連携

また、この機能による接続情報は、Alteryx Server でも作成可能で、Designer から参照することもできます。なお、この際も DSN レス接続であれば、ドライバをインストールしている端末からその接続情報を使用したデータソースへの接続が同様に可能です。

Alteryx Server での接続情報の作成・Designer との連携については、以下の記事をご参照ください。

Alteryx ServerのData Connectionで接続を管理する – Alteryx Serverアドベントカレンダー2022 | Developers IO

In-DB 接続の管理を使用する

In-DBツールの場合、接続情報は「オプション > 詳細オプション」にある「In-DB 接続の管理」にて管理されます。接続In-DB ツールから新たに接続を作成する際も、この管理画面が開くことになります。

In-DB 接続の管理でも、直接、接続文字列を記述することができ、DSN レス接続を利用可能です。下図は In-DB接続の管理上の[読み取り]に関する設定画面ですが、「接続文字列」欄に直接ドライバやユーザー名などを含む接続文字列を記述しています。

「In-DB 接続の管理」で作成した接続先情報は Alteryx 側で設定ファイルとして保持されることになり、ツールからは、接続名を指定することになります(上図ではSnowflake indb dsn less という名称)。

そのため、DSN レス接続であっても、ワークフローを共有するだけでは、共有先の端末からデータソースに接続できません。

接続タイプとして「ファイル」を使用し、作成される「.indbc」ファイルも一緒に共有する必要があります。In-DBツールにおけるデータベースへの接続設定については、以下に詳しく記載があるので、こちらもご覧ください。

Alteryxにおけるデータ入出力の際とIn-DBを使った際とでのODBC接続の設定の違い | Developers IO

DCM を使用する

DCM は Version 2021.4 から利用可能な機能です。DCM では「データソース」と「資格情報」を定義し、その組み合わせを「接続(Connection)」として実際にデータソースへの接続に使用します。

Designer 2021.4 リリースノート | Alteryx Help

DCM はデータソースへの接続情報を一元管理するための機能となっており、DCM で定義した接続情報は、In-DBツールを含む DCM に対応するツールから呼び出すことができます。

DCM Supported Connectors and Tools | Alteryx Help

DCM から接続情報を呼び出した場合、ツール上は、以下のようにdcmからはじまる接続情報となります。

また、DCM に対応するデータソースの接続を作成する際に、DSN レス接続を使用することが可能な場合があります。

以下はデータ接続マネージャーでテクノロジーとして「PostgreSQL」を指定した画面です。PostgreSQL への接続方法としてさらに、DSN を使用する「PostgreSQL ODBC」や DSN レス接続を使用するかなどを選択することができます。

上記で「PostgreSQL ODBC DSNレス with Simba」を選択すると次のような設定画面が開きます。

GUI 上の設定項目に、接続情報を入力していけばよく、上述の方法のような接続文字列(ドライバ名など)をユーザーが記述する必要はありません。データ接続の管理では、直接接続文字列を記述する必要があったので、DCM より接続情報を作成・呼び出すことでデータソースへの接続がよりスムーズになることが期待できます。

Version 2023.1 の場合、以下の主要なデータベース製品は、DSNレス接続に対応しています。(※一部抜粋)

  • PostgreSQL
  • MySQL
  • Microsoft SQL Server
  • Oracle
  • Amazon Redshift
  • Snowflake
  • Google BigQuery

Alteryx Server との連携

DCM も Alteryx Server 上で作成することができます。また、Alteryx Designer のユーザーと同期したり、Server 上の他のユーザーが異なるユーザーの DCM を含むワークフローを実行することができる共有機能もあります。また、一般的な使い方ではないかもしれませんが、Alteryx Server のあるユーザーの DCM を Designer の複数端末と同期することで、DCM そのものを共有することも可能です。
DCM の概要については、以下をご参照ください。

Alteryx の DCM の概要 | Developers IO

まとめ

DSN レス接続を利用する際の4つのパターンをまとめると以下のようになります。
※いずれも接続情報の共有先からデータソースに接続するには、ドライバのインストールや共有先からもデータソースに接続できる必要があります。

方法 対象 特徴
ツール設定に直接記述 データ入力・出力ツール ・各ツールの接続設定に直接接続文字列を記述する
・異なるワークフローや複数の入出力ツールを配置する場合、同じデータソースであっても都度入力が必要
・ワークフローを共有することで共有先でもデータソースに接続可能
データ接続の管理を使用 データ入力・出力ツール ・「データ接続の管理」で接続情報を作成し、ツールから呼び出し可能
・接続を作成する際は、接続文字列を直接記述する
・Alteryx Server との連携が可能
・接続情報を共有することで共有先でもデータソースに接続可能
In-DB 接続の管理を使用 In-DBツール ・「In-DB 接続の管理」で接続情報を管理、ツールからその接続名で呼び出し可能
・「In-DB 接続の管理」で接続を作成する際は、接続文字列を直接記述する
・他端末との連携時は、接続タイプを「ファイル」とし、「.indbc」ファイルも一緒に共有
DCM データ入力・出力ツール
In-DBツール
・DCM で接続情報を管理、ツールからその接続名で呼び出し可能
・DCM で接続を作成する際は、必要な情報を各設定項目に入力する(接続文字列の記述は不要)
・Alteryx Server との連携が可能
・DCM を共有することで、共有先でもデータソースに接続可能
・DCM に対応するツールのみ利用可能

さいごに

DSN レス接続を使用すると、接続情報を共有したい際に効果を発揮する場合があります。Alteryx での DSN レス接続の設定方法もいくつかあるので、状況に応じて最適なものを選ぶことで、よりスムーズにデータソースに接続し、分析時のストレスが軽減できると思います。こちらの記事が何かの参考になれば幸いです。

参考

AlteryxのDB接続とDSN設定の話 | Developers IO