Snowflake
本文介紹如何將 Tableau 連線到 Snowflake 資料倉儲並設定資料來源。
使用說明:使用 Snowflake 進行金鑰組驗證
要支援使用 Snowflake 的金鑰組驗證,必須安裝 Snowflake 版本 3.4.0 或更高版本的 ODBC 驅動程式。
金鑰組驗證可用於 Tableau Desktop、Tableau Prep、從 2024.3 版本開始的 Tableau Cloud 以及 2025.1 版本的 Tableau Server。
為了將具有內嵌 Snowflake OAuth 連線的工作簿發佈到 Tableau Server 時可以使用 specific-username 選項,您儲存的認證必須完全符合(包括角色)。若您開發的工作簿具有包含角色的連線,但在 Tableau Server 上儲存的認證不包含該角色,則 specific-username 選項將不可用。
在 Web 製作中,不支援使用 Snowflake 金鑰組驗證發佈和編輯工作簿及資料來源。必須使用 Tableau Desktop 建立和編輯工作簿或資料來源,然後才能發佈到站台。
附註:2025 年 5 月,Snowflake 淘汰使用單一要素驗證(使用者名稱和密碼)的方法。
- 更多資訊請參閱此處:Snowflake 提前啟用 MFA 要求(連結在新視窗開啟)。
- 建議此 Tableau 知識庫文章以採取動作,並確保您在 Tableau 中的 Snowflake 連線不被干擾:Snowflake 棄用單一元素驗證(連結在新視窗開啟)
重要資訊:在某些情況下,可能會顯示錯誤:
[Snowflake][技術支援]( 40470) 欄發生轉換錯誤...數值超出範圍。錯誤代碼:A3E43C3B
- 建議此 Tableau 知識庫文章以採取動作,並確保您在 Tableau 中的 Snowflake 連線不被干擾:Snowflake 棄用單一元素驗證(連結在新視窗開啟)
開始之前
在開始之前,請收集以下連線資訊:
要連線到的伺服器的名稱
驗證方法:
OAuth:若要從 IdP 啟用同盟,請使用此方法。
使用者名稱和密碼:如果想在 Snowflake 中存放使用者憑證,請使用此方法。
Okta 使用者名稱和密碼:如果打算使用 Okta 來管理驗證,請使用此方法。
金鑰組驗證:使用公開金鑰和私人金鑰組認證來增強安全性連線。
程式設計存取權杖:請參閱 Snowflake 的先決條件(連結在新視窗開啟),以驗證您使用的 Snowflake 帳戶是否符合使用程式設計存取權杖的所有已記錄要求。有關如何建立 Snowflake 程式設計存取權杖的更多資訊,請參閱產生程式設計存取權杖(連結在新視窗開啟)。
選擇的驗證方法所需的登入認證。
附註:如果使用金鑰組驗證,則需要使用 OpenSSL 版本 3.x 或更高版本來建立金鑰。
(可選)要在每次 Tableau 連線時執行的初始 SQL 陳述式。
(可選)用於此連線的任何自訂驅動程式參數或新的預設 VARCHAR 大小。
附註:若要將 Tableau Cloud 或 Tableau Server 與金鑰組驗證結合使用,必須在 Tableau Cloud 或 Tableau Server 中儲存認證,然後才能發佈工作簿進行共用。有關詳情,請參閱設定 Snowflake 進行金鑰組驗證。
需要驅動程式
此連接器需要驅動程式才能與資料庫通訊。如果電腦上未安裝該驅動程式,Tableau 會在連線對話方塊中顯示一條訊息,其中包含指向驅動程式下載(連結在新視窗開啟)頁面的連結,您可在該頁面中找到驅動程式連結和安裝說明。
附註:要支援使用 Snowflake 的金鑰組驗證,必須安裝 Snowflake 版本 3.4.0 或更高版本的 ODBC 驅動程式。
進行連線並設定資料來源
選取 Snowflake 作為連線後,將顯示含 3 個索引標籤的對話方塊。使用一般索引標籤選取伺服器、倉儲和驗證類型。可以使用「初始 SQL」索引標籤選擇性地在每個連線開始時執行 SQL 命令。有關詳情,請參閱執行初始 SQL。最後,可以使用進階索引標籤可選新增自訂驅動程式參數和預設 VARCHAR 大小。
有關如何為 Tableau 和 Snowflake 之間的連線設定 OAuth 的資訊,請參閱為 Snowflake 連線設定 OAuth(連結在新視窗開啟) 和 適用於 Snowflake 的外部 OAuth。
將 Tableau 連線到資料
在連線螢幕上,至伺服器底下,選取更多,然後選取 Snowflake。
在一般索引標籤上,輸入要連線到的伺服器名稱。
(可選)輸入角色和倉儲。
選取將使用的驗證方法:使用 OAuth、使用者名稱和密碼、Okta 使用者名稱和密碼登入,或者使用金鑰組登入。
(可選)如果要在每個連線開始時執行 SQL 命令,請選取「初始 SQL」。有關詳情,請參閱執行初始 SQL。
(可選)對於 Tableau Desktop 和 Server,在進階索引標籤上輸入希望用於此連線的任何自訂參數。(在 Tableau Cloud 上不可用)
- 完成選取驗證方法的登入步驟:
使用 OAuth 登入:
按一下登入。
在開啟的 Web 頁面中,輸入使用者名稱和密碼並選取「登入」來登入 Snowflake。或者,如果 Snowflake 設定為支援 SSO,則選取單一登入。
按一下「確定」確認存取 Snowflake 資料的授權。
使用者名稱和密碼:
輸入使用者名稱與可選密碼。
按一下「登入」。
使用者名稱和密碼(使用程式設計存取權杖):
在密碼欄位中輸入與權杖關聯的使用者名稱和權杖字串。
按一下「登入」。
Okta 使用者名稱和密碼:
輸入使用者名稱與可選密碼。
輸入可選的 SAML IdP(Okta 伺服器的 URL)。
按一下登入。
使用金鑰組登入:
在伺服器中,輸入 Snowflake 伺服器位址。
輸入倉儲以及可選的角色。
在驗證中,選取使用金鑰組登入。
輸入與這些金輪關聯的使用者名稱。
在私密金鑰檔案中,瀏覽到包含私密金鑰的 .p8 檔案。
(可選)如果受到保護,請輸入私密金鑰檔案密碼。
接下來,請按照設定資料來源下的指示進行動作。
如果 Tableau 無法建立連線,請驗證您的認證是否正確。如果仍然無法連線,則說明您的電腦在定位伺服器時遇到問題。請聯絡網路管理員或資料庫管理員以取得更多協助。
存取權杖逾時:始終驗證存取權杖 TDC
Snowflake 存取權杖會在 10 分鐘後過期。在某些擷取重新整理過程中,存取權杖過期時,會稍後在作業中建立新連線。為解決此問題,我們新增了一項新功能,該功能從 Tableau 2024.2 開始預設啟用。若要在舊版本中啟用此功能,可以使用下列 TDC。
<connection-customization class='snowflake' enabled='true' version='10.0'>
<vendor name='snowflake' />
<driver name='snowflake' />
<customizations>
<customization name='CAP_OAUTH_VALIDATE_ALWAYS' value='yes'/>
</customizations>
</connection-customization>透過將該 TDC 包含在 Tableau 存放庫資料來源資料夾中,可以與 Tableau Desktop 或 Tableau Server 一起使用。對於 Tableau Cloud,可以使用 Bridge 並透過連線來設定自訂 TDC。有關詳情,請參閱自訂和調整連線。
附註:流程不支援內嵌 TDC。
使用驅動程式參數自訂連線
可以透過將驅動程式參數附加到「進階」索引標籤中的連線字串來修改使用 Snowflake 連接器建立的連線。
附註:您無法變更 Tableau 所產生的驅動程式參數;您只能附加參數。
例如,此語法可指定在未滿足 no_proxy 值時要使用的 Proxy 伺服器,並且允許主機名稱略過該 Proxy 伺服器:
Proxy=http://proxyserver.company:80;no_proxy=.trustedserver.com;
有關另一個自訂驅動程式參數範例,請參閱為 Snowflake 使用 Proxy。
也可以在預設 VARCHAR 大小(位元組)欄位中輸入 VARCHAR 的替代大小。有關使用此欄位以及對效能的影響的更多詳情,請參閱 Snowflake ODBC 文件。
附註:如果想自訂而不將其內嵌到資料來源中,可以在 Windows 的註冊中設定參數(只有標記為「設定參數」的參數可用)。有關驅動程式參數的詳情,請參閱 Snowflake 網站上的 ODBC 組態和連線參數。
設定資料來源
在資料來源頁面上,執行下列操作:
(可選)在頁面頂端選取預設資料來源名稱,然後輸入要在 Tableau 中使用的唯一資料來源名稱。舉例來說,使用可幫助其他資料來源使用者推斷出要連線的資料來源的資料來源命名約定。
- 從「倉儲」下拉式清單中選取倉儲或使用文字方塊按名稱搜尋倉儲。
附註:若將其保留為空白並且不選取倉儲,Tableau 會使用預設的 Snowflake 虛擬倉儲。
有關詳情,請參閱 Snowflake 中的預設虛擬倉儲。
在「資料庫」下拉式清單中一個選取資料庫或使用文字方塊按名稱搜尋資料庫。
在「架構」下拉式清單選取一個架構或使用文字方塊按名稱搜尋架構。
在「表」下,選取表或使用文字方塊按名稱搜尋表。
將表拖到畫布,然後選取工作表索引標籤以開始分析。
附註:如果在使用金鑰組驗證時發佈工作簿,請確保在「發佈工作簿」窗格的「管理資料來源」區段中選取正確的驗證類型。
登入到 Mac
如果在 Mac 上使用 Tableau Desktop,則在輸入伺服器名稱進行連線時,請使用完整網域名稱(例如 mydb.test.ourdomain.lan)而不是相對的網域名稱(例如 mydb 或 mydb.test)。
或者,可以將網域新增到 Mac 電腦的「搜尋網域」的清單中,以便在您連線時,只需要提供伺服器名稱。若要更新「搜尋網域」的清單,請轉到「系統喜好設定」>「網路」>「進階」,然後開啟「DNS」索引標籤。
Snowflake 中的預設虛擬倉儲
建立 Snowflake 資料來源後,將同時建立 Snowflake 倉庫(用於計算資源)與 Snowflake 資料庫(用於資料資源)。倉儲和資料庫都需要權限才可進行存取。假設您具有對每個倉儲和資料庫的權限,則可以根據所需的計算能力使用不同的倉儲存取同一資料庫。
建立資料來源後,可以選擇從下拉清單中選擇倉庫。若將其保留為空白並且不選取倉庫,Tableau 會使用預設的 Snowflake 虛擬倉庫。若隨後發佈該資料來源或工作簿,則當使用者連線時,Tableau 會使用該使用者的 預設 Snowflake 虛擬倉儲。
應為每位使用者指派一個預設倉儲,以便 Tableau 可以使用該預設倉儲來開啟 Snowflake 資料來源中的工作簿。
為 Snowflake 使用 Proxy
您可以透過 Proxy 從 Tableau 連線至 Snowflake。若使用 Tableau version2019.4 或之後的版本,則可以在「進階」索引標籤中輸入所需的參數來使用連接器對話方塊對其進行設定。
例如:
proxy=http://proxyserver.company:80
如需進一步了解應該使用的參數,請參閱 Snowflake 說明文件(連結在新視窗開啟)。
附註:Tableau 不會使用 DSN 連線到 Snowflake,因此您可以忽略 Snowflake 說明文件中有關使用 DSN 的指示說明。
若使用的是 2019.4 之前的 Tableau 版本,則可以透過使用 odbc-connect-string-extras 在 TDC 檔案中輸入參數進行設定。
例如:
<connection-customization class='snowflake' enabled='true' version='19.1'>
<vendor name='snowflake' />
<driver name='snowflake' />
<customizations>
<customization name='odbc-connect-string-extras' value='proxy=http://proxyserver.company:80' />
</customizations></connection-customization>
有關詳情,請參閱為原生連接器自訂連線字串(連結在新視窗開啟)。
疑難排解
Snowflake 網站上的將 Tableau 與 Snowflake 搭配使用的最佳做法(連結在新視窗開啟)(需要註冊)是個很好的資源。
效能和擷取大小
為了獲得最佳效能,尤其是對於資料擷取,Tableau 需要確定最佳擷取大小。可以透過對變數長度欄位設定限制來改善這一點。
此外,從 2024.3 的 Tableau Desktop 和 Tableau Server 以及從 2025.1 的 Tableau Cloud 開始,Tableau 會繼續透過 Snowflake 連線的擷取大小來提高效能。
確定當前的擷取大小
使用的擷取大小記錄在 tabprotosrv 記錄中。Tabprotosrv 是驅動程式沙箱流程。下面是一個範例:
ODBCRowsetSource::ODBCRowsetSource:嘗試將列取得大小設為 4128 列,每列 254 位元組
變動欄位長度限制
使用無界 VARCHAR 或 VARBINARY 欄位時,驅動程式會將欄位大小傳回為 16 MB。這會導致 Tableau 使用較小的擷取大小來保持在記憶體限制內,從而造成查詢速度緩慢。有幾種方法可以解決這個問題:
在資料庫上的欄定義中新增限制,例如 VARCHAR(256),或將資料表包裝在執行相同動作的檢視中。
連線到 Tableau Desktop 中的 Snowflake 後,使用進階索引標籤上的「預設 VARCHAR 大小(位元組)」欄位。它由 Tableau 2024.3 中的「最大 VARCHAR 大小」重新命名,但執行相同的動作。它為 ODBC 驅動程式設定 default_varchar_size 參數,這將限制傳回 Tableau 的欄位大小。有關詳情,請參閱 https://docs.snowflake.com/en/developer-guide/odbc/odbc-parameters(連結在新視窗開啟)。
錯誤:[Snowflake][支援] (40470) 欄上的轉換錯誤...數值超出範圍。錯誤代碼:A3E43C3B
新增此錯誤是為了在 Snowflake 資料來源 NUMERIC 的資料類型欄位包含超出 Tableau 支援的允許 Number (Whole) 範圍的數值時提醒客戶。
在與 Tableau Snowflake 連線中,NUMERIC 資料類型欄位在使用 Number (Whole) 時被檢索為 SQL_C_SBIGINT 欄位。範圍 Number (Whole) 是從 9,223,372,036,854,775,807到 -9,223,372,036,854,775,808 的值。NUMERIC 資料類型的最大精度為 38 位數。
若要解決此問題,請將問題欄位的資料類型從 Number (Whole) 變更為 Number (Decimal) 或 String。
與資料庫管理員合作,確定哪個欄位可能包含大於允許範圍的值。
或者,將資料連線中的任何資料類型逐個修改
Number (Whole)到Number (Decimal)或String直至錯誤不再顯示。
有關在 Tableau 中變更欄位資料類型的詳情,請參閱資料類型(連結在新視窗開啟)。
常見問題
我遇到錯誤「此欄位 XXX 不存在。」我該怎麼辦?
使用計算欄位、將其新增至工作表並將資料來源取代為 Snowflake 資料 (CustomSQL) 時,會發生此錯誤。
請使用取代欄位引用功能來解決該錯誤。有關取代欄位引用的其他資訊,請參閱取代欄位引用。
