Snowflake
本文介紹如何將 Tableau 連線到 Snowflake 資料倉儲並設定資料來源。
使用說明:使用 Snowflake 進行金鑰組認證
- 要支援使用 Snowflake 的金鑰組驗證,必須安裝 Snowflake 版本 3.4.0 或更高版本的 ODBC 驅動程式。
- 金鑰組認證可用於從版本 2024.3 開始的 Tableau Desktop 和 Tableau Cloud。它將在 Tableau Server 未來的版本中提供。
- Web 製作不支援使用 Snowflake 金鑰組驗證發佈工作簿。必須使用 Tableau Desktop 建立工作簿,然後可以發佈到 Tableau Cloud。
開始之前
在開始之前,請收集以下連線資訊:
- 要連線到的伺服器的名稱
- 驗證方法:
- OAuth:如果要從 IDP 啟用同盟,請使用此方法。
- 使用者名稱和密碼:如果想在 Snowflake 中存放使用者憑證,請使用此方法。
- Okta 使用者名稱和密碼:如果打算使用 Okta 來管理驗證,請使用此方法。
- 金鑰組驗證:使用公開金鑰和私密金鑰組認證來增強安全性連線。
- 登入認證取決於選擇的驗證方法。
附註:如果使用金鑰組驗證,則需要使用 OpenSSL 版本 3.x 或更高版本來建立金鑰。 - (可選)要在每次 Tableau 連線時執行的初始 SQL 陳述式。
- (可選)用於此連線的任何自訂驅動程式參數或新的預設 VARCHAR 大小。
附註:若要將 Tableau Cloud 與金鑰組驗證結合使用,也必須在 Tableau Cloud 中儲存認證,然後才能發佈工作簿進行共用。有關詳情,請參閱設定 Snowflake 進行金鑰組驗證。
需要驅動程式
此連接器需要驅動程式才能與資料庫通訊。如果電腦上未安裝該驅動程式,Tableau 會在連線對話方塊中顯示一條訊息,其中包含指向驅動程式下載(連結在新視窗開啟)頁面的連結,您可在該頁面中找到驅動程式連結和安裝說明。
附註:要支援使用 Snowflake 的金鑰組驗證,必須安裝 Snowflake 版本 3.4.0 或更高版本的 ODBC 驅動程式。
進行連線並設定資料來源
選取 Snowflake 作為連線後,將顯示含 3 個索引標籤的對話方塊。使用一般索引標籤選取伺服器、倉儲和驗證類型。還可以在每個連線開始時執行 SQL 命令選取「初始 SQL」。有關詳情,請參閱執行初始 SQL。最後,可以使用進階索引標籤可選新增自訂驅動程式參數和預設 VARCHAR 大小。
有關如何為 Tableau 和 Snowflake 之間的連線設定 OAuth 的資訊,請參閱為 Snowflake 連線設定 OAuth(連結在新視窗開啟) 和 適用於 Snowflake 的外部 OAuth。
將 Tableau 連線到資料
- 在連線螢幕上,至伺服器底下,選取更多,然後選取 Snowflake。
- 在一般索引標籤上,輸入要連線到的伺服器名稱。
- (可選)輸入角色和倉儲。
- 選取將使用的驗證方法:使用者名稱和密碼、Okta 使用者名稱和密碼、使用 OAuth 登入,或者使用金鑰組登入。
- (可選)如果要在每個連線開始時執行 SQL 命令,請選取「初始 SQL」。有關詳情,請參閱執行初始 SQL。
- (可選)對於 Tableau Desktop 和 Server,在進階索引標籤上輸入希望用於此連線的任何自訂參數。(在 Tableau Cloud 上不可用)
- 完成選取驗證方法的登入步驟:
- 使用 OAuth 登入:
- 按一下登入。
- 在開啟的 Web 頁面中,輸入使用者名稱和密碼並選取「登入」來登入 Snowflake。或者,如果 Snowflake 設定為支援 SSO,則選取單一登入。
- 按一下「確定」確認存取 Snowflake 資料的權限。
- 使用者名稱和密碼:
- 輸入使用者名稱與可選密碼。
- 按一下登入。
- Okta 使用者名稱和密碼:
- 輸入使用者名稱與可選密碼。
- 輸入可選的 SAML IdP(Okta 伺服器的 URL)。
- 按一下登入。
- 使用金鑰組登入
- 在伺服器中,輸入 Snowflake 伺服器位址。
- 輸入倉儲以及可選的角色。
- 在驗證中,選取使用金鑰組登入。
- 輸入使用者名稱與這些金鑰關聯。
- 在私密金鑰檔案中,瀏覽到包含私密金鑰的 .p8 檔案。
- (可選)如果受到保護,請輸入私密金鑰檔案密碼。
- 使用 OAuth 登入:
- 接下來,請按照設定資料來源下的指示進行動作。
如果 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-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>
有關詳細資訊,請參閱為原生連接器自訂連線字串(連結在新視窗開啟)。
疑難排解
效能和獲取大小
為了獲得最佳效能,尤其是對於資料擷取,Tableau 需要確定最佳擷取大小。有兩種方法可以改進這一點:設定變動長度欄位的限制,以及啟用可調整大小的擷取緩衝區。為了獲得最佳結果,應該同時使用兩者。
確定當前的擷取大小
使用的擷取大小記錄在 tabprotosrv 記錄中。Tabprotosrv 是驅動程式沙箱流程。下面是一個範例:
ODBCRowsetSource::ODBCRowsetSource:嘗試將列取得大小設為 4128 列,每列 254 位元組
附註:以下的一些建議需要 TDC,但除非使用 Tableau Bridge,否則這些建議在 Tableau Cloud 上不起作用。若使用的是 Tableau Bridge,則可以在 Bridge 主機上安裝 TDC,以將其套用於通過該主機的所有連線。
變動欄位長度限制
使用無界 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(連結在新視窗開啟)。
- 使用如下所示的 TDC 自訂:
<connection-customization class='snowflake' enabled='true' version='10.0'>
<vendor name='snowflake' />
<driver name='snowflake' />
<customizations>
<customization name='CAP_ODBC_FETCH_BUFFERS_RESIZABLE' value='yes'/>
<customization name='odbc-connect-string-extras' value='default_varchar_size=512;default_binary_size=512'/>
</customizations>
</connection-customization>
啟用 CAP_ODBC_FETCH_BUFFERS_RESIZABLE
從 Tableau 2024.3 開始預設啟用此功能。在此之前,可以使用 TDC。如果要在資料庫中設定 default_varchar_size
,則可以使用如下所示的 TDC。
<connection-customization class='snowflake' enabled='true' version='10.0'>
<vendor name='snowflake' />
<driver name='snowflake' />
<customizations>
<customization name='CAP_ODBC_FETCH_BUFFERS_RESIZABLE' value='yes'/>
</customizations>
</connection-customization>
常見問題
以下是一些常見問題和解決步驟。
我遇到一個錯誤「此欄位 XXX 不存在」,我該怎麼辦?
使用計算欄位、將其新增至工作表並將資料來源取代為 Snowflake 資料 (CustomSQL) 時,會發生此錯誤。
請使用取代欄位引用功能來解決該錯誤。有關取代欄位引用的其他資訊,請參閱取代欄位引用。
- Snowflake 網站上的將 Tableau 與 Snowflake 搭配使用的最佳做法(連結在新視窗開啟)(需要註冊)。