執行初始 SQL
附註 :Tableau Prep Builder 版本 2019.2.2 及更高版本支援使用 Initial SQL,但尚不支援 Tableau Desktop 支援的所有相同選項。有關在 Tableau Prep Builder 中使用 Initial SQL 的資訊,請參閱 Tableau Prep Builder Salesforce 說明中的 使用 Initial SQL 查詢連線 (連結在新視窗開啟) 。
連線到某些資料庫後,可以指定 Initial SQL 命令,該命令將在與資料庫建立連線(例如,開啟工作簿、重新整理擷取、登入 Tableau Server 或發佈到 Tableau Server)時執行或使用快取的值。
附註: Initial SQL 與自訂 SQL 連線不同。自訂 SQL 連線定義針對其發出查詢的關係(或表)。有關詳情,請參閱 連線到自訂 SQL 查詢 。
可使用此命令:
-
設定將在會話期間使用的臨時表。
-
設定自訂資料環境。
您可以在「伺服器連線」對話方塊中或在「資料來源」頁上選擇新增初始 SQL 命令。
附註: 如果您的資料來源支援執行初始 SQL 語句,則「伺服器連線」對話方塊的左下角中會出現 「初始 SQL」 連結。有關資料來源的資訊,請參閱 支援的連接器 。
使用初始 SQL
-
在「伺服器連線」對話方塊上,按一下 「初始 SQL」 。或者,在「資料來源」頁面上,選取 「資料」 > 「初始 SQL」 或 「資料」 > 「查詢分段和初始 SQL」 ,具體取決於您要連線的資料庫。
-
在「初始 SQL」對話方塊中輸入 SQL 命令。可使用 「插入」 下拉式功能表將參數傳遞給資料來源。
附註: Tableau 不會檢查陳述式是否有錯誤。連線後,會將此 SQL 陳述式傳送到資料庫。
您的軟體許可證可能會限制您針對連線使用初始 SQL。如果發佈到 Tableau Server,則必須對該伺服器進行設定以允許使用「初始 SQL」語句。預設情況下,已將伺服器軟體設定為在 Web 瀏覽器載入工作簿時允許運行這些語句。
管理員可以使用
tsm configuration set
命令將伺服器設定為忽略 Initial SQL 陳述式:
tsm configuration set -k vizqlserver.initialsql.disabled -v true
若伺服器不允許使用 Initial SQL 陳述式,則工作簿會開啟,但不會傳送 Initial SQL 命令。
有關
tsm configuration set
指令更多的詳情,請參閱
Tableau Server 說明
(連結在新視窗開啟)
初始 SQL 語句中的參數
您可以將參數傳遞給初始 SQL 語句中的資料來源。以下清單列出了在 Initial 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 工作簿的名稱。僅用於具有嵌入式資料來源的工作簿。 | Financial-Analysis |
警告: Tableau Desktop 不包含網域。若不使用委派,並設定 tsm configuration set -k DelegationUseFullDomainName=-v true--force-keys,則可以包括。
以下範例顯示可以在初始 SQL 語句中使用參數的不同方式。
-
本範例在 Microsoft SQL Server 上設定安全上下文:
EXECUTE AS USER = [TableauServerUser] WITH NO REVERT; -
本範例演示如何在 DataStax 資料來源中使用參數在記錄中新增詳細資料,或設定工作階段變數追蹤該資料:
SET TABLEAUVERSION [TableauVersion]; -
本範例可用於幫助設定 Oracle VPD 的列級別安全性:
beginDBMS_SESSION.SET_IDENTIFIER([TableauServerUser]);end;附註: Oracle PL/SQL 區塊需要後置分號來終止該區塊。請查閱 Oracle 文件以瞭解正確的語法。
針對伺服器延遲執行
可以延遲 Initial SQL 陳述式,使其僅在伺服器上執行。針對伺服器延遲執行的一個原因是您沒有權限執行設定模擬的命令。使用 <ServerOnly></ServerOnly> 標記將只在伺服器上執行的命令括起來。
範例:
CREATE TEMP TABLE TempTable(x varchar(25));