在 Power BI Desktop 中使用 DirectQuery
當您使用 Power BI Desktop 連線到任何資料來源時,您可以匯入資料複本。 針對某些資料來源,您也可以在不需使用 DirectQuery 匯入資料的情況下,直接連線到資料來源。 本文說明 [匯入] 和 [DirectQuery] 連線模式之間的差異,並告訴您如何使用 DirectQuery 連線到資料來源。 它也涵蓋使用 DirectQuery 的考量和限制,例如效能和安全性。
若要判斷資料來源是否支援 DirectQuery,請檢視 Power Query 中的連接器一文中可用資料來源的完整清單,這也適用於 Power BI。 從支援的連接器清單中,選取描述您感興趣的資料來源的文章,然後參閱連接器文章中標題為支援的功能一節。 如果資料來源一文中未列出 DirectQuery,則該資料連接器不支援 DirectQuery。
以下是使用 [匯入] 和 [DirectQuery] 連線模式之間的差異:
匯入:從選取資料表和資料行匯入至 Power BI Desktop 的資料複本。 當您建立視覺效果或與其互動時,Power BI Desktop 會使用匯入的資料。 若要在初始匯入或最近重新整理之後查看基礎資料變更,您必須再次匯入完整的模型,以重新整理資料。
DirectQuery - 沒有任何資料匯入到 Power BI Desktop。 針對關聯來源,可以選取 Power BI Desktop [資料] 窗格中出現的資料表和資料行。 針對多維度來源,例如 SAP Business Warehouse (SAP BW),所選 Cube 的維度及度量會出現在 [資料] 窗格中。 當您建立視覺效果或與其互動時,Power BI Desktop 會查詢基礎資料來源,因此您一律都在檢視當下的資料。
當您使用 DirectQuery 並建立視覺效果或與其互動時,必須查詢基礎來源。 重新整理視覺效果所需時間取決於基礎資料來源的效能。 如果服務要求所需資料在最近已被要求時,Power BI Desktop 便會使用最新資料來減少顯示視覺效果所需的時間。 從主資料夾功能區選取重新整理,來使用目前資料重新整理所有視覺效果。
使用 DirectQuery 時,有許多資料模型和資料轉換可以使用,但仍有一些效能型限制。 如需 DirectQuery 優點、限制和建議的詳細資訊,請參閱 Power BI 中的 DirectQuery。
DirectQuery 優點
使用 DirectQuery 的優點包括:
DirectQuery 可讓您透過非常大型的語意模型來建置視覺效果,在這種情況下,無法使用預先彙總來匯入所有資料。
DirectQuery 報表一律會使用目前的資料。 查看基礎資料變更需要您重新整理資料,且可能無法重新匯入大型語意模型來重新整理資料。
1-GB 語意模型限制不適用於 DirectQuery。
使用 DirectQuery 連線
若要使用 DirectQuery 連線到資料來源:
在 Power BI Desktop 功能區的首頁群組中,選取取得資料,然後選取 DirectQuery 支援的資料來源,例如 SQL Server。
在連線的對話框中,在 [資料連線模式] 下方,選取 [DirectQuery]。
發佈到 Power BI 服務
您可以將 DirectQuery 報表發佈至 Power BI 服務,但您需要採取額外步驟,讓 Power BI 服務開啟報表。
若要連結 Power BI 服務至除了 Azure SQL 資料庫、Azure Synapse Analytics (先前稱為 SQL 資料倉儲)、Amazon Redshift 和 Snowflake 資料倉儲以外的 DirectQuery 資料來源,請安裝內部部署的資料閘道,並註冊資料來源。
如果您搭配 Azure SQL Database、Azure Synapse、Amazon Redshift 或 Snowflake 資料倉儲等雲端來源使用 DirectQuery,則不需要內部部署的資料閘道。 您仍必須提供 Power BI 服務的認證,以開啟已發佈的報表。 在沒有認證的情況下,當您嘗試開啟已發佈的報表或探索以 DirectQuery 連線所建立的語意模型時,就會發生錯誤。
若要提供開啟報表和重新整理資料的認證:
在 Power BI 服務中,移至您的工作區,然後在工作區內容清單中找到使用 DirectQuery 的語意模型。
選取語意模型名稱旁的 [更多選項] 三個水平點圖示,然後選擇 [設定]。
在 [資料來源認證] 下方,提供要連線至資料來源的認證。
注意
如果您使用具有私人 IP 位址 Azure SQL Database 的 DirectQuery 時,您需要使用內部部署網路閘道。
考量與限制
DirectQuery 模式不支援某些 Power BI Desktop 特定的功能,或有一些限制。 此外,Power BI 服務的某些功能,例如快速見解,也不適用於使用 DirectQuery 的語意模型。 在您決定是否要使用 DirectQuery 時,請考慮這些功能限制。 同時應考慮下列因素:
效能和負載考量
DirectQuery 會將所有要求傳送至來源資料庫,因此視覺效果所需的重新整理時間取決於基礎來源傳回結果時所需的時間。 五秒以下為接收視覺效果的要求資料建議回應時間。 重新整理時間超過 30 秒,對於取用報表的使用者來說是難以接受的使用體驗。 在 Power BI 服務中花費超過四分鐘進行查詢,且使用者收到錯誤通知。
來源資料庫的負載也取決於取用已發行報表的 Power BI 使用者數量,特別是在當報表使用列層級安全性 (RLS) 時。 重新整理多個使用者共用的非 RLS 儀表板磚會傳送單一查詢至資料庫,但重新整理使用 RLS 的儀表板磚則需要每個使用者傳送一個查詢。 增加的查詢會大幅提高負載,並可能會影響效能。
100 萬個資料列限制
DirectQuery 會針對任何從雲端非內部部署資料來源傳回的資料定義 100 萬個資料列限制。 內部部署來源限制為每個資料列大約 4 MB 的已定義承載 (視專屬的壓縮演算法而定),而針對視覺效果的限制為 16 MB。 進階容量可以設定不同的最大資料列限制,如部落格中 Power BI Premium 的新容量設定一文內所述。
Power BI 會建立盡可能有效率的查詢,但某些產生的查詢可能會從基礎資料來源中擷取太多資料列。 例如,如果有一個簡單圖表包含高基數的資料行,而且彙總選項設定為不計算,就可能會發生此情況。 此視覺效果必須只包含其基數低於一百萬的資料行,否則就必須套用適當的篩選。
資料列限制不適用於用來選取語意模型 DirectQuery 傳回值的彙總或計算,僅適用於傳回的資料列。 例如,使用在資料來源上執行的查詢可以彙總一千萬個資料列。 只要傳回至 Power BI 的資料少於一百萬個資料列,查詢即可準確地傳回結果。 如果資料超過 100 萬個資料列,Power BI 會顯示錯誤訊息,除非 Premium 容量中有不同的系統管理員設定限制。 錯誤提示:外部資料來源的查詢結果集超過允許列數的最大值 1000000。
安全性考量
根據預設,在 Power BI 服務取用已發佈報表的所有使用者都會使用發佈後輸入的認證來連接到基礎資料來源。 這種情況與匯入的資料相同。 無論基礎來源所定義的任何安全性規則為何,所有使用者都會看到相同的資料。
如果您需要針對 DirectQuery 來源實作每個使用者的安全性,請使用 RLS 或針對來源設定 Kerberos 限制驗證。 Kerberos 無法供所有來源使用。 如需詳細資訊,請參閱 具有 Power BI 的列層級安全性 (RLS) 和 將 Kerberos 型 SSO 從 Power BI 服務設定至內部部署資料來源。
其他 DirectQuery 限制
其他一些使用 DirectQuery 的限制包括:
如果 Power Query 編輯器查詢過於複雜,則會發生錯誤。 若要修正錯誤,您必須刪除 Power Query 編輯器中發生問題的步驟,或切換至 [匯入] 模式。 SAP BW 等多維度來源無法使用 Power Query 編輯器。
在 DirectQuery 中無法使用自動日期/時間階層。 DirectQuery 模式不支援按照年份、季、月或日向下切入的日期資料行。
針對資料表或矩陣視覺效果,從 DirectQuery 來源傳回超過 500 個的資料列結果會有 125 個資料行限制。 這些結果會顯示資料表或矩陣中的捲軸,讓您擷取更多資料。 在此情況下,資料表或矩陣中的資料行數量上限為 125。 如果您必須在單一資料表或矩陣中包含超過 125 個資料行,請考慮建立使用
MIN
、MAX
、FIRST
或LAST
的量值,因為這些量值不會計入此最大值。無法從 [匯入] 模式變更為 [DirectQuery] 模式。 如果您要匯入所有必要的資料,可以從 [DirectQuery] 模式切換為 [匯入] 模式。 您無法切換回 DirectQuery 模式,主要是因為特徵集不受 DirectQuery 支援。 多維度來源上的 DirectQuery 模型 (例如 SAP BW) 也無法從 [DirectQuery] 模式切換為 [匯入] 模式,因為處理外部度量的方式不同。
在具有已指派可共用雲端連線和/或細微存取控制的 Power BI 服務中,若導出資料表與導出資料行所參考的 DirectQuery 資料表來自具有單一登入 (SSO) 驗證的資料來源,則不提供支援。