Tableau Desktop から Amazon Redshift に送信するクエリのカーソル定義を無効化する

2017.12.19

はじめに

今回は、Tableau Desktopの設定を変更して、カーソル定義を無効化させる方法について解説します。現状、Tableau Desktop から Redshiftにアクセスする際、カーソルにその定義を含めてRedshiftに対して実行が為される為、Redshiftのクエリ情報を確認してみても以下の様にカーソルの名称のみが表示されるだけで『実際にどんなクエリがTableauからRedshiftに対して発行されていたのか』の詳細が確認出来ません。

Amazon Redshiftのクエリを参照するワークアラウンドとして、以下のブログを紹介していました。

Amazon Redshift: カーソルの定義内容を確認&SQLクエリログ詳細情報を取得する

設定方法

設定方法について解説します。Tableau Desktopのバージョンは 10.3.5、Redshiftのクラスタバージョンは 1.0.1582 です。

手順1:設定ファイルの作成

UseDeclareFetchは、サポートされているサーバー側のカーソル数を指定できます。UseDeclareFetch=0と設定することで、サーバーサイドカーソルを無効に設定します。下記の設定は、ConfigureRedshiftCursors.tdc というファイル名で保存します。

<connection-customization class='redshift' version='9.0' enabled='true'>
  <vendor name='redshift' />
  <driver name='redshift' />
  <customizations>
    <customization name='odbc-connect-string-extras' value='UseDeclareFetch=0' />
  </customizations>
</connection-customization>

手順2:設定ファイルの配置

作成した設定ファイルを、以下のどちらかのディレクトリに配置します。

  • My Tableau Repository\Datasources folder (for data sources)
  • My Tableau Repository\Workbooks folder (for workbooks)

私のMac環境では、以下の場所にコピーしています。

/Users/cm-user/Documents/My Tableau Repository/Datasources/ConfigureRedshiftCursors.tdc

確認

Tableau Desktopでは、以下のビューを作成しました。

実行すると、RedshiftコンソールにSQLがそのまま表示することが確認できます。

最後に

Tableau が実際にどのようなクエリを実行しているのかは、パフォーマンスチューニングの観点で大変気になるところです。今回の方法は Tableau Desktopに設定ファイルを配置するだけで済むのでお手軽に試すことができます。

参考文献

Tableau Online Tip of the Week: Resolving Reoccurring Redshift Cursor Limit Errors