初期 SQL の実行
注: Tableau Prep Builder バージョン 2019.2.2 以降では初期 SQL の使用がサポートされていますが、Tableau Desktop でサポートされているオプションと同じオプションがすべてサポートされているわけではありません。Tableau Prep Builder での初期 SQL の使用については、Tableau Prep Builder オンライン ヘルプの「初期 SQL を使用した接続のクエリ」(新しいウィンドウでリンクが開く)を参照してください。
データベースによっては、データベースへの接続時に実行する初期 SQL コマンドを指定できる場合もあります。データベースへの接続は、ワークブックを開くとき、抽出を更新するとき、Tableau Server にサインインするとき、または Tableau Server にパブリッシュするときなどに行われます。ビューの更新時には初期 SQL は実行されません。この初期 SQL はカスタム SQL 接続とは異なります。カスタム SQL 接続はクエリの発行対象となる関係 (表) を定義します。詳細については、「カスタム SQL クエリへの接続」を参照してください。
このコマンドを使用すると、次を実行できます。
セッション中に使用する一時表の設定。
カスタム データ環境の設定。
[サーバー接続] ダイアログ ボックスまたは [データ ソース] ページでは初期 SQL コマンドを追加するオプションを利用できます。
注: データ ソースが初期 SQL ステートメントの実行をサポートしている場合、[サーバー接続] ダイアログ ボックスの左下隅に [初期 SQL] リンクが表示されます。データ ソースの詳細については、「サポートされるコネクタ」を参照してください。
初期 SQL を使用するには
[サーバー接続] ダイアログ ボックスで、[初期 SQL] をクリックします。または [データ ソース] ページで、接続先のデータベースに応じ、[データ] > [初期 SQL] か、[データ] > [クエリ バンディングおよび初期 SQL] を選択します。
[初期 SQL] ダイアログ ボックスに SQL コマンドを入力します。[挿入] ドロップダウン メニューを使用してデータ ソースにパラメーターを渡すことができます。
注: Tableau はステートメントのエラーを調べません。この SQL ステートメントは、接続時にデータベースにそのまま送信されます。
ソフトウェア ライセンスにより、接続への初期 SQL の使用が制限される場合があります。Tableau Server にパブリッシュする場合、初期 SQL ステートメントを許可するようにサーバーが設定されている必要があります。既定では、ワークブックを Web ブラウザーに読み込んだときにこれらのステートメントを実行できるようにサーバー ソフトウェアが設定されています。
管理者は、tsm configuration set
コマンドを使用してサーバーを構成し、初期 SQL ステートメントを無視することができます。
tsm configuration set -k vizqlserver.initialsql.disabled -v true
サーバーで初期 SQL ステートメントが許可されていない場合、ワークブックは開きますが、初期 SQL コマンドは送信されません。
tsm configuration set
コマンドの詳細については、「Tableau Server ヘルプ」(新しいウィンドウでリンクが開く)を参照してください。
初期 SQL ステートメントのパラメーター
初期 SQL ステートメントのデータ ソースにパラメーターを渡すことができます。これが役立つ理由は複数あります。
TableauServerUser または TableauServerUserFull パラメーターを使用して偽装を設定できます。
データ ソースでサポートされている場合は、行レベルのセキュリティ (Oracle VPD や SAP Sybase ASE など) を設定して、ユーザーが表示権限を持つデータのみを表示させることができます。
ログに、Tableau バージョンやワークブック名などの詳細を提供できます。
次のパラメーターは初期 SQL ステートメントでサポートされます。
パラメーター | 説明 | 返される値の例 |
TableauServerUser | 現在のサーバー ユーザーのユーザー名。サーバーで擬装を設定する際に使用します。ユーザーが Tableau Server にサインインしていない場合は、空の文字列を返します。 | jsmith |
TableauServerUserFull | 現在のサーバー ユーザーのユーザー名およびドメイン。サーバーで擬装を設定する際に使用します。ユーザーが Tableau Server にサインインしていない場合は、空の文字列を返します。 | domain.lan\jsmith |
TableauApp | Tableau アプリケーションの名前。 | Tableau Desktop Professional Tableau Server |
TableauVersion | Tableau アプリケーションのバージョン。 | 9.3 |
WorkbookName | Tableau ワークブックの名前。埋め込みデータ ソースが入ったワークブックでのみ使用します。 | 財務分析 |
警告: Tableau Desktop にはドメインが含まれていません。委任を使用しておらず、tsm 設定「set -k DelegationUseFullDomainName=-v true--force-keys」を設定している場合は、これを含めることができます
次の例は、初期 SQL ステートメントでパラメーターを使用できるさまざまな方法を示しています。
- この例では、Microsoft SQL Server でセキュリティ コンテキストを設定します。
EXECUTE AS USER = [TableauServerUser] WITH NO REVERT;
この例では、DataStax データ ソースでパラメーターを使用して、ログ記録に詳細を追加したり、セッション変数を設定してデータを追跡したりする方法を説明しています。
SET TABLEAUVERSION [TableauVersion];
この例を使用すると、Oracle VPD に低レベルのセキュリティを設定する際に役立ちます。
begin
DBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);
end;
注:Oracle PL/SQL ブロックでは、ブロックを終了するために、末尾にセミコロンを付ける必要があります。正しい構文については、Oracle ドキュメントを参照してください。
サーバーに対する実行の保留
初期 SQL ステートメントを保留して、サーバー上でのみ実行されるようにすることができます。サーバーへの実行を保留する理由の 1 つに、偽装を設定したコマンドを実行するパーミッションを持っていない場合があります。サーバー上でのみ実行されるコマンドを囲うには <ServerOnly></ServerOnly> タグを使用します。
例:
CREATE TEMP TABLE TempTable(x varchar(25)); INSERT INTO TempTable VALUES (1); <ServerOnly>INSERT INTO TempTable Values(2);</ServerOnly>
セキュリティと偽装
初期 SQL ステートメントで TableauServerUser または TableauServerUserFull パラメーターを使用している場合は、他のユーザーと共有できない専用接続を作成します。これによりキャッシュの共有が制限され、セキュリティが向上し、低パフォーマンスにつながる可能性があります。
MySQL および Oracle 接続で「表を作成する」際のトラブルシューティング
MySQL 接続で、初期 SQL を使用して表を作成しても表が一覧表示されない
MySQL への接続時に、次のような初期 SQL ステートメントを実行すると、Tableau でのクエリの構築方法が理由で表が表示されない場合があります。
CREATE TABLE TestV1.testtable77(testID int);
この問題を解決するには、次のように IF NOT EXISTS
を SQL ステートメントに追加します。
CREATE TABLE IF NOT EXISTS TestV1.TestTable(testID int);
Oracle 接続で、初期 SQL を使用して表を作成すると Tableau が停止する
Oracle に接続して次のような初期 SQL ステートメントを実行すると、Tableau でのクエリの構築方法が原因で、Tableau は回転マークが表示された状態で停止します。
CREATE TABLE TEST_TABLE (TESTid int)
この問題を解決するには、次の SQL ステートメントを使用します。
BEGIN EXECUTE IMMEDIATE 'create table test_table(testID int)'; EXCEPTION WHEN OTHERS THEN NULL; END;