Google Cloud SpannerにTableauからJDBC接続する手順

参考URLにも記載した、こちらの記事の方法で接続可能です。

JDBCダウンロード

SpannerにJDBC経由で接続lするので、以下のURLからSpanner用のJDBCドライバをダウンロードします。

cloud.google.com

ダウンロードしたJDBCドライバのjarファイルはOS毎に以下のパスに置きます。

OS Path
Windows C:\Program Files\Tableau\Drivers
Mac ~/Library/Tableau/Drivers
Linux /opt/tableau/tableau_driver/jdbc

f:id:yomon8:20200122194406p:plain

Spanner接続用のアカウント作成

Tableauからの接続に利用するサービスアカウントを作成します。

# Project ID設定
PROJECT=your-project-name

# サービスアカウント作成
gcloud iam service-accounts create --project ${PROJECT} spanner-reader \
    --description "spanner read user for tableau" \
    --display-name "spanner-reader"

# SpannerのRead用のロールを付与
gcloud projects add-iam-policy-binding ${PROJECT} \
  --member serviceAccount:spanner-reader@${PROJECT}.iam.gserviceaccount.com \
  --role roles/spanner.databaseReader

以下のようなサービスアカウントができます。 f:id:yomon8:20200122195333p:plain

Credentialファイルをダウンロードしておきます。

gcloud iam service-accounts keys create ./${PROJECT}_spanner.json \
  --iam-account spanner-reader@${PROJECT}.iam.gserviceaccount.com

TDCファイル作成(Tableau Datasource Customizatio)

以下のようなTDCファイルを作成します。

<connection-customization class='genericjdbc' version='10.00' enabled='true'>
  <vendor name='genericjdbc' />
  <driver name='cloudspanner' />
  <customizations>
    <customization name='CAP_JDBC_SUPPRESS_ENUMERATE_DATABASES' value='yes' />
    <customization name='CAP_JDBC_SUPPRESS_ENUMERATE_SCHEMAS' value='yes' />
    <customization name='CAP_JDBC_SUPPRESS_EMPTY_CATALOG_NAME' value='yes' />
  </customizations>
</connection-customization>

ソフトウェア毎に以下の場所に配置します。

Tableau Path
Tableau Desktop Documents\My Tableau Repository\Datasources
Tableau Server(Windows) ProgramData\Tableau\Tableau Server\data\tabsvc\vizqlserver\Datasources
Tableau Server(Linux) /var/opt/tableau/tableau_server/data/tabsvc/vizqlserver/Datasources

f:id:yomon8:20200122195845p:plain

Tableau再起動

Tableauを再起動します。

Spannerをデータソースとして接続

以下のようなJDBCのURLを組みます。

jdbc:cloudspanner://localhost;Project=<GCP-PROJECT-ID>;Instance=<SPANNER-INSTANCE-NAME>;Database=<SPANNER-DB-NAME>;PvtKeyPath=<PATH-TO-YOUR-PRIVATE-KEY.json>

最後についているCredentialファイルを指定するパラメータ PvtKeyPath=<PATH-TO-YOUR-PRIVATE-KEY.json> は以下のような GOOGLE_APPLICATION_CREDENTIALS の環境変数で代替可能です。

f:id:yomon8:20200122203346p:plain

データソースに Other Dataabse(JDBC) を選択し、先程作成したJDBC URLを指定します。 DialectはMySQLとします。UsernameやPasswordは空欄のままで大丈夫です。Sign inをクリックするとパラメータが間違っていなければログオンできます。

f:id:yomon8:20200122201657p:plain

ボカシばかりになってしまいましたが、テーブルの一覧と、テーブルの内容もクエリしてこれます。

f:id:yomon8:20200122203708p:plain

参考URL

medium.com