最初に
TableauからAthenaに繋ぐウィザードを立ち上げると、Access KeyとSecret Access Keyを求められます。
やはりロールで繋ぎたいよなと考えていたところ、GCPのSpannerにはJDBC接続できたことを思い出し、Athenaも同じことできるのでは?とやってみたらできました。
前提
Athenaで対象のデータをクエリする権限を持ったIAMロールがアタッチされたEC2インスタンスにTableauがインストールされている前提で作業します。
AthenaのStream APIは444ポートを使うので、その点も要注意です。
画面はWindowsでキャプチャしています。
設定
JDBCドライバを以下からダウンロードします。
https://docs.aws.amazon.com/athena/latest/ug/connect-with-jdbc.html
ダウンロードしたJDBCドライバのjarファイルはOS毎に以下のパスに置きます。
OS | Path |
---|---|
Windows | C:\Program Files\Tableau\Drivers |
Mac | ~/Library/Tableau/Drivers |
Linux | /opt/tableau/tableau_driver/jdbc |
TDCファイル作成(Tableau Datasource Customizatio)
以下のようなTDCファイルを作成します。
<connection-customization class='genericjdbc' version='10.00' enabled='true'> <vendor name='genericjdbc' /> <driver name='awsathena' /> <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 |
配置したら、Tableauを再起動します。
JDBC接続文字列作成
以下のパラメータで作成してみます。
パラメータ | 値 |
---|---|
AwsRegion | ap-northeast-1 |
S3OutputLocation | s3://otomo-tmp/ |
Workgroup | primary |
AwsCredentialsProviderClass | com.simba.athena.amazonaws.auth.DefaultAWSCredentialsProviderChain |
詳細はこちらのPDF参考にしてください。
上記のパラメータでできた接続文字列が以下になります。
jdbc:awsathena://ap-northeast-1.amazonaws.com:443;AwsRegion=ap-northeast-1;S3OutputLocation=s3://otomo-tmp/;Workgroup=primary;AwsCredentialsProviderClass=com.simba.athena.amazonaws.auth.DefaultAWSCredentialsProviderChain
TableauからAthenaに接続してみる
データソースにOther Databases (JDBC)を選択してURLに上記の接続文字列を入れます。
Dialectに SQL92
を選択します。
他は空欄のままSign Inをクリックします。
データがクエリできていることが確認できました。