1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Tableau for MacからData Virtualization(Watson Query)にJDBC接続してみた

Last updated at Posted at 2022-11-02

前提

  • 環境
    • IBM Cloud Watson Query
    • Tableau for Mac
    • IBM Data Server Driver

概要

タイトルのまんまである

1. JDBCの接続情報を取得しよう

Data Virtualization(Watson Query)と言っても、接続部分はほとんどDb2なので普通にDb2と接続する感覚でOK
SaaS版のWatson Queryの場合はService credentialを作成すると接続に使うインターフェースごとにどのようなプロパティを指定すればいいか簡単に分かるぞ
ちなみにService credentialで作成されるapikeyはservice-to-serviceでの接続で使うものを意図しているので、user-to-serviceの接続の場合は基本的にはIAM apikeyを使おう

WatsonQueryServiceCredential.png

Service Credentialの中身を見ていくと以下のような箇所があるはずなので、これをそのままjdbc接続に使う情報として使おう
ポイントはlegacyuser向けの接続ではIBM_SUBSTTOKEN_APIKEYというusernameでpasswordにはapikeyを指定するという点だ
クライアント側のツールによってはユーザー名やパスワードの明示的な入力をチェックしていることもあり、必ずしもjdbcの接続ストリングでapiKey指定のみで接続できるわけではないので、そういう場合にはlegacyuser向けの接続を使うこと

    "jdbc": {
      "environment": {},
      "jdbc_url_accesstoken": [
        "jdbc:db2://xxxxx:00000/bludb:securityMechanism=15;accessToken=<accesstoken>;sslConnection=true;"
      ],
      "jdbc_url_api_key": [
        "jdbc:db2://xxxxx:00000/bludb:securityMechanism=15;apiKey=<APIKEY>;sslConnection=true;"
      ],
      "type": "uri"
    },
    "legacy": {
      "certificate": {
        "certificate_base64": 
...

      "legacyuser": [
        {
          "password": "<APIKEY>",
          "securityMechanism": "15",
          "username": "IBM_SUBSTTOKEN_APIKEY"
        }
      ],
      "type": "uri"
    }
  },

2. Tableauから接続してみよう

実際にTableauからJDBC接続してみよう
Tableau for MacではDb2専用の接続はサポートされていないので汎用JDBCから接続する

Tableu for Macの場合はJDBCドライバーは$HOME/Library/Tableau/Drivers以下から読み込むのでここにDb2のJDBCドライバー(db2jcc4.jar)を配置する

Tableuのアプリを立ち上げてその他のデータベース(JDBC)から汎用JDBC接続をしよう
入力内容は、

  • ユーザー名、パスワード入力が強制されているっぽいので、JDBC接続ストリングからapiKeyのプロパティを除こう
  • ユーザー名、パスワードはlegacyuser向けの設定を使おう

TableauJDBC.png

これで接続してみる

TableauJDBCnoCap.png

接続はいけたっぽい
ただしデータベースの選択のところから何もでてこず先に進めない

3. TDCファイルを書こう

このようなUIになっているのは汎用JDBC接続を使用しており、他のDatabase製品ではDatabaseを選択するところからInteractiveにできるようにする必要があるからだと推測されるが、Db2の場合はDatabaseは接続の単位になっていて接続ストリング上にも指定しているのでそもそもInteractiveに選択する必要はない

こういう場合はTableau側でTDCファイルというものでカスタマイズしてあげると対応できるようだ
ポイントは

  • TDCファイルの読み込み元はデフォルトだと$HOME/Documents/マイ Tableau リポジトリ/データ ソース配下に配置する
  • .tdcという拡張子をつける
  • 今回はDatabaseの選択UIをなくすCAP_JDBC_SUPPRESS_ENUMERATE_DATABASESというカスタムプロパティを指定する

最終的に中身はこんな感じ

$HOME/Documents/マイ Tableau リポジトリ/データ ソース/db2.tdc
<?xml version='1.0' encoding='utf-16' ?>
<connection-customization class='genericjdbc' enabled='true' version='2022.2'>
  <vendor name='genericjdbc' />
  <driver name='db2' />
  <customizations>
        <customization name='CAP_JDBC_SUPPRESS_ENUMERATE_DATABASES' value='yes' />
  </customizations>
</connection-customization>

これで再度接続してみよう

TableauJDBCCapYes.png

今度はスキーマ一覧から選択できるようになっており、その中で表も選択できる
データの中身もちゃんと表示できている
どうやらこれで無事使えそうだ

参考

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?