在 Power BI Desktop 使用複合模型

先前在 Power BI Desktop 中,當您在報表中使用 DirectQuery 時,不論 DirectQuery 還是匯入,都不允許該報表進行其他數據連線。 使用複合模型時,會移除該限制。 報表可以順暢地包含來自多個 DirectQuery 或匯入數據連線的數據連線,以您選擇的任何組合。

Power BI Desktop 中的複合模型功能包含三個相關功能:

  • 複合模型:允許報表具有來自不同來源群組的兩個或多個數據連線。 這些來源群組可以是一或多個 DirectQuery 連線和匯入連線、兩個以上的 DirectQuery 連線,或其任何組合。 本文詳細說明複合模型。

  • 多對多關聯性:使用複合模型,您可以在 數據表之間建立多對多關聯 性。 此方法會移除數據表中唯一值的需求。 其也會消除先前的因應措施,例如只引進新的資料表來建立關聯性。 如需詳細資訊,請參閱 在Power BI Desktop中套用多對多關聯性。

  • 儲存體 模式:您現在可以指定哪些視覺效果查詢後端數據源。 這項功能有助於改善效能並減少後端負載。 先前,即使是簡單的視覺效果,例如交叉分析篩選器,也會起始後端來源的查詢。 如需詳細資訊,請參閱 在Power BI Desktop中管理儲存模式。

使用複合模型

使用複合模型時,您可以使用Power BI Desktop或 Power BI 服務 連線到不同類型的數據源。 您可以透過幾種方式建立這些資料連線:

  • 將數據匯入 Power BI,這是取得數據最常見的方式。
  • 使用 DirectQuery 直接連線到原始來源存放庫中的數據。 若要深入瞭解 DirectQuery,請參閱 Power BI 中的 DirectQuery。

當您使用 DirectQuery 時,複合模型可以建立 Power BI 模型,例如單 一 .pbix Power BI Desktop 檔案,可執行下列任一動作或兩個動作:

  • 結合來自一或多個 DirectQuery 來源的數據。
  • 結合 DirectQuery 來源的數據和匯入數據。

例如,使用複合模型,您可以建置結合下列數據類型的模型:

  • 來自企業數據倉儲的銷售數據。
  • 部門 SQL Server 資料庫的銷售目標數據。
  • 從電子表格匯入的數據。

結合多個 DirectQuery 來源或結合 DirectQuery 與匯入數據的模型稱為複合模型。

您可以建立數據表之間的關聯性,就像您一律擁有一樣,即使這些數據表來自不同的來源也一樣。 任何跨來源的關聯性都會以多對多基數建立,不論其實際基數為何。 您可以將它們變更為一對多、多對一或一對一。 無論您設定哪一個基數,跨來源關聯性都有不同的行為。 您無法使用數據分析表示式 (DAX) 函式,從many側邊擷取值one。 您也可以看到效能影響與相同來源內的多對多關聯性。

注意

在複合模型的內容中,所有匯入的數據表實際上都是單一來源,不論實際的基礎數據源為何。

複合模型的範例

如需複合模型的範例,請考慮使用 DirectQuery 連接到 SQL Server 中公司數據倉儲的報表。 在此實例中,數據倉儲包含 依國家/地區季度Bike (Product) 數據的銷售額,如下圖所示:

Screenshot of an example with composite models in Relationship view.

此時,您可以使用此來源的欄位來建置簡單的視覺效果。 下圖顯示所選 季度的 ProductName 總銷售額。

Screenshot of a visual based on data from the previous example.

但是,如果您在 Excel 電子表格中擁有指派給每個產品之產品經理的數據,以及行銷優先順序呢? 如果您想要依產品經理檢視銷售金額,可能無法將此本機數據新增至公司數據倉儲。 或者,它可能需要幾個月的時間。

您可以從數據倉儲匯入該銷售數據,而不是使用 DirectQuery。 然後,銷售數據可以與您從電子表格匯入的數據結合。 不過,基於導致第一次使用 DirectQuery 的原因,這種方法是不合理的。 原因可能包括:

  • 基礎來源中強制執行之安全性規則的一些組合。
  • 必須能夠檢視最新的數據。
  • 數據的更大規模。

以下是複合模型所在的位置。 複合模型可讓您使用 DirectQuery 連線到數據倉儲,然後使用 取得更多來源的數據 。 在此範例中,我們會先建立公司數據倉儲的 DirectQuery 連線。 我們使用 [取得數據],選擇 [Excel],然後流覽至包含本機數據的電子錶格。 最後,我們會匯入包含產品名稱、指派的銷售經理和優先順序的電子錶格。

Screenshot of the navigator window after selecting an excel file as a source.

在 [ 欄位 ] 清單中,您可以看到兩個數據表:來自 SQL Server 的原始 Bike 數據表和新的 ProductManagers 數據表。 新的數據表包含從 Excel 匯入的數據。

Screenshot of the Fields pane with the Bike and ProductManagers fields selected.

同樣地,在 Power BI Desktop 的 [關聯性] 檢視中,我們現在會看到另一個名為 ProductManagers 的數據表

Screenshot of the tables in Relationship view.

我們現在必須將這些數據表與模型中的其他數據表產生關聯。 一如往常,我們會從 SQL Server 建立 Bike 數據表與匯入的 ProductManagers 數據表之間的關聯性。 也就是說,關聯性介於 Bike[ProductName]ProductManagers[ProductName]之間。 如先前所述,跨越來源的所有關聯性都會預設為多對多基數。

Screenshot of the Create relationship window.

既然我們已建立此關聯性,它就會顯示在 Power BI Desktop的 [關聯性 ] 檢視中,如我們所預期。

Screenshot of the Create relationship window after new relationships are created.

我們現在可以使用 [欄位] 清單中的任一字段來建立視覺效果。 此方法會順暢地混合來自多個來源的數據。 例如,每個 Product Manager 的 SalesAmount 總計會顯示在下圖中:

Screenshot of the Fields pane with SalesAmount highlighted and the visual shown.

下列範例會顯示維度數據表的常見案例,例如 ProductCustomer,其會隨著從別處匯入的某些額外數據而擴充。 您也可以讓數據表使用 DirectQuery 連線到各種來源。 若要繼續我們的範例,假設每個國家/地區週期的銷售目標會儲存在個別的部門資料庫中。 和往常一樣,您可以使用 取得數據 來連線到該數據,如下圖所示:

 Screenshot of the Navigator window with sales targets selected.

如同我們先前所做的,我們可以在模型中建立新數據表與其他數據表之間的關聯性。 然後,我們可以建立結合數據表數據的視覺效果。 讓我們再看看 [關聯性 ] 檢視,我們已在其中建立新的關聯性:

Screenshot of the Relationship view with many tables.

下一個映像是以我們建立的新數據和關聯性為基礎。 左下角的視覺效果會顯示總 Sales AmountTarget,而變異數計算會顯示差異。 Sales AmountTarget 數據來自兩個不同的 SQL Server 資料庫。

Screenshot of the Report view with more data.

設定儲存模式

複合模型中的每個數據表都有儲存模式,指出數據表是以 DirectQuery 或匯入為基礎。 儲存模式可以在 [屬性] 窗格中檢視和修改。 若要顯示儲存模式,請以滑鼠右鍵按兩下 [字段] 清單中的數據表,然後選取 [屬性]。 下圖顯示 SalesTargets 數據表的儲存模式。

您也可以在每個資料表的工具提示上檢視儲存模式。

Screenshot of a tooltip displaying the storage mode.

對於任何包含 DirectQuery 和某些匯入數據表的 Power BI Desktop 檔案( .pbix 檔案),狀態列會顯示名為 Mixed 的儲存模式。 您可以在狀態列中選取該字詞,並輕鬆地將所有數據表切換為匯入。

如需儲存模式的詳細資訊,請參閱 在Power BI Desktop中管理儲存模式。

注意

您可以在 Power BI Desktop 和 Power BI 服務 中使用混合儲存模式。

計算資料表

您可以將匯出數據表新增至使用 DirectQuery 的 Power BI Desktop 模型。 定義匯出數據表的數據分析表示式 (DAX) 可以參考匯入或 DirectQuery 數據表或兩者的組合。

計算數據表一律會匯入,當您重新整理數據表時,其數據會重新整理。 如果匯出數據表參考 DirectQuery 數據表,參考 DirectQuery 數據表的視覺效果一律會顯示基礎來源中的最新值。 或者,參考導出數據表的視覺效果會顯示上次重新整理計算數據表時的值。

重要

使用此功能的 Power BI 服務 不支援導出數據表。 如需詳細資訊,請參閱本文中根據語意模型使用複合模型一節。

安全性含意

複合模型具有一些安全性影響。 傳送至某個數據源的查詢可以包含已從另一個來源擷取的數據值。 在先前的範例中,由 Product Manager 顯示的視覺效果會將SQL 查詢傳送至 Sales 關係資料庫。 該 SQL 查詢可能包含產品管理員的名稱及其相關聯的產品。

Screenshot of a script showing security implications.

因此,儲存在電子表格中的資訊現在包含在傳送至關係資料庫的查詢中。 如果這項資訊是機密的,您應該考慮安全性影響。 特別是,請考慮下列幾點:

  • 任何可以檢視追蹤或稽核記錄的資料庫系統管理員都可以檢視這項資訊,即使沒有原始來源數據的許可權也一樣。 在此範例中,系統管理員需要 Excel 檔案的許可權。

  • 應該考慮每個來源的加密設定。 您想要避免透過加密連線從某個來源擷取資訊,然後不小心將它包含在未加密連線傳送至另一個來源的查詢中。

若要允許確認您已考慮任何安全性影響,當您建立複合模型時,Power BI Desktop 會顯示警告訊息。

此外,如果作者將 Table1 從模型 A 新增至複合模型(讓我們將其稱為模型 C 以供參考),則檢視以模型 C 為基礎的報表,就可以查詢模型 A不受數據列層級安全性 RLS 保護的任何數據表

基於類似的原因,當您開啟從不受信任的來源傳送的 Power BI Desktop 檔案時,請小心。 如果檔案包含複合模型,則會使用開啟檔案之使用者的認證,從某個來源擷取的資訊會傳送至另一個數據源做為查詢的一部分。 此資訊可由Power BI Desktop 檔案的惡意作者檢視。 當您一開始開啟包含多個來源的Power BI Desktop 檔案時,Power BI Desktop 會顯示警告。 警告類似於當您開啟包含原生 SQL 查詢的檔案時所顯示的警告。

對於效能的影響

當您使用 DirectQuery 時,應該一律考慮效能,主要是為了確保後端來源有足夠的資源來為使用者提供良好的體驗。 良好的體驗表示視覺效果會在五秒以下重新整理。 如需更多效能建議,請參閱 Power BI 中的 DirectQuery。

使用複合模型會增加其他效能考慮。 單一視覺效果可能會導致將查詢傳送至多個來源,這通常會將結果從一個查詢傳遞至第二個來源。 這種情況可能會導致下列形式的執行:

  • 包含大量常值的來源查詢:例如,要求一組所選產品經理銷售額的視覺效果,必須先找出那些產品經理所管理的產品。 此順序必須在視覺效果傳送包含 子句中所有產品標識碼 WHERE 的 SQL 查詢之前發生。

  • 在較低層級的數據粒度上查詢的來源查詢,稍後會在本機匯總數據:當符合 Product Manager 篩選準則的產品數目增加時,在 子句中包含WHERE所有產品可能會變得沒有效率或無法運作。 相反地,您可以在較低層級的產品查詢關係型來源,然後在本機匯總結果。 如果 Products數超過 1 百萬個限制,查詢就會失敗。

  • 多個來源查詢,每個群組各一個值一個:當匯總使用 DistinctCount 並依另一個來源的數據行分組時,如果外部來源不支援有效率地傳遞定義群組的許多常值,則必須依值傳送每個群組的一個 SQL 查詢。

    電子表格匯入之產品管理員從 SQL Server 數據表要求 CustomerAccountNumber 相異計數的視覺效果,必須從傳送至 SQL Server 的查詢中,從產品管理員數據表傳入詳細數據。 例如,在其他來源上,Redshift 無法執行此動作。 相反地,每個 銷售經理會傳送一個 SQL 查詢,最多會有一些實際限制,此時查詢會失敗。

這些案例各有其本身對效能的影響,而每個數據源的確切詳細數據會有所不同。 雖然聯結兩個來源之關聯性中使用的數據行基數仍然很低,但數千個,效能不應該受到影響。 隨著這個基數的增長,您應該更加注意對所產生效能的影響。

此外,使用多對多關聯性表示必須針對每個總計或小計層級將個別查詢傳送至基礎來源,而不是匯總本機的詳細值。 包含總計的簡單數據表視覺效果會傳送兩個來源查詢,而不是一個。

來源群組

來源群組是來自 DirectQuery 來源或數據模型中所有匯入來源的專案集合,例如數據表和關聯性。 複合模型是由一或多個來源群組所組成。 請參考下列範例:

  • 連接到稱為 Sales 之 Power BI 語意模型的複合模型,並藉由新增 原始語意模型中無法使用的 Sales YTD 量值來擴充語意模型。 此模型包含一個來源群組。
  • 複合模型,透過從名為 Targets 的 Excel 工作表和名為 Regions CSV 檔案匯入數據表,以及建立與稱為 Sales 之 Power BI 語意模型的 DirectQuery 連接,以結合數據。 在此情況下,有兩個來源群組,如下圖所示:
    • 第一個來源群組包含 Targets Excel 工作表和 Regions CSV 檔案中的數據表。
    • 第二個來源群組包含 Sales Power BI 語意模型中的專案

Diagram showing the Import and Sales source groups containing the tables from the respective sources.

如果您將另一個 DirectQuery 連線新增至另一個來源,例如 DirectQuery 連線至名為 Inventory 的 SQL Server 資料庫,則來自該來源的專案將會新增為另一個來源群組:

Diagram showing the Import, Sales and Inventory source groups containing the tables from the respective sources.

注意

從另一個來源匯入數據不會新增另一個來源群組,因為所有匯入來源的所有專案都位於一個來源群組中。

來源群組和關聯性

複合模型中有兩種類型的關聯性:

  • 來源群組內部關聯性。 這些關聯性會將來源群組內的項目關聯在一起。 除非這些關聯性是多對多的,否則這些關聯性一律是一般關聯性,在此情況下會受到限制。
  • 跨來源群組關聯性。 這些關聯性會從一個來源群組開始,並結束在不同的來源群組中。 這些關聯性一律是有限的關聯性。

深入瞭解一般和有限關聯性與其影響之間的差異。

例如,在下圖中,我們已新增三個跨來源群組關聯性,將數據表與各種來源群組建立關聯:

Diagram showing the Import, Sales and Inventory source groups containing the tables from the respective sources and relationships between the source groups as described previously.

本機和遠端

來源群組中屬於 DirectQuery 來源群組的任何專案都會 被視為遠端,除非專案在本機定義為 DirectQuery 來源的延伸模組或擴充的一部分,而且不是遠端來源的一部分,例如量值或導出數據表。 根據 DirectQuery 來源群組數據表的匯出數據表屬於「匯入」來源群組,並視為 本機。 「匯入」來源群組中的任何項目都會視為本機。 例如,如果您在使用 DirectQuery 連線至清查來源的複合模型中定義下列量值,則會將量值視為本機:

[Average Inventory Count] = Average(Inventory[Inventory Count])

計算群組、查詢和量值評估

計算群組 提供一種方式來減少多餘的量值數目,並將一般量值表達式分組在一起。 一般使用案例是時間智能計算,您想要能夠從實際值切換為月對日、季對日或日期計算。 使用複合模型時,請務必注意計算群組之間的互動,以及量值是否只參考來自單一遠端來源群組的專案。 如果量值只參考來自單一遠端來源群組的專案,而遠端模型會定義影響量值的計算群組,即使量值是在遠端模型或本機模型中定義,還是會套用該計算群組。 不過,如果量值未獨佔參考單一遠端來源群組中的專案,但參考套用遠端計算群組之遠端來源群組的專案,則量值的結果仍會受到遠端計算群組的影響。 請考慮下列範例:

  • 轉銷商銷售是遠端模型中定義的量值。
  • 遠端模型包含可變更轉銷商銷售結果的計算群組
  • 因特網銷售是本機模型中定義的量值。
  • Total Sales 是本機模型中定義的量值,且具有下列定義:
[Total Sales] = [Internet Sales] + [Reseller Sales]

在此案例中 ,因特網銷售量值 不會受到遠端模型中定義的計算群組所影響,因為它們不是相同模型的一部分。 不過,計算群組可以變更 Reseller Sales 量值的結果,因為它們位於相同的模型中。 這個事實表示必須仔細評估 Total Sales 量值傳回的結果。 假設我們使用遠端模型中的計算群組來傳回至今的年份結果。 轉銷商銷售傳回的結果現在是一年到日期的值,而因特網銷售回的結果仍然是實際的。 總銷售額的結果現在可能出人意料,因為它會將實際結果新增至迄今為止的結果。

Power BI 語意模型與 Analysis Services 上的複合模型

使用複合模型搭配 Power BI 語意模型和 Analysis Services,您可以使用 DirectQuery 連線來建置複合模型,以聯機到 Power BI 語意模型、Azure Analysis Services(AAS)和 SQL Server 2022 Analysis Services。 使用複合模型,您可以將這些來源中的數據與其他 DirectQuery 和匯入的數據結合。 想要將企業語意模型中的數據與自己擁有的其他數據合併的報表作者,例如 Excel 電子表格,或想要從其企業語意模型個人化或擴充元數據,將會發現這項功能特別有用。

在Power BI語意模型上管理複合模型

若要在Power BI語意模型上啟用複合模型的建立和取用,您的租用戶必須啟用下列參數:

此外,針對 進階版 容量和 進階版[每個使用者],應該啟用 “XMLA 端點” 設定,並將 設定為 [只讀] 或 [讀取/寫入]。

租使用者管理員可以在管理入口網站中啟用或停用 Power BI 語意模型的 DirectQuery 連線。 雖然預設會啟用此功能,但停用會有效地阻止使用者在Power BI語意模型上將新的複合模型發佈至服務。

Admin setting to enable or disable DirectQuery connections to Power BI semantic models.

在 Power BI 語意模型上使用複合模型的現有報表將繼續運作,而且使用者仍然可以使用 Desktop 建立複合模型,但無法發佈至服務。 相反地,當您選取 [變更此模型] 來建立 Power BI 語意模型的 DirectQuery 連線時,您會看到下列警告訊息:

Screenshot showing Warning message informing the user that publication of a composite model that uses a Power BI semantic model is not allowed, because DirectQuery connections are not allowed by the admin. The user can still create the model using Desktop.

如此一來,您仍然可以探索本機 Power BI Desktop 環境中的語意模型,並建立複合模型。 不過,您將無法將報表發佈至服務。 當您發佈報表和模型時,您會看到下列錯誤訊息和發行集將會遭到封鎖:

Screenshot showing Error message that blocks publication of a composite model that uses a Power BI semantic model because DirectQuery connections are not allowed by the admin.

請注意,Power BI 語意模型的即時連線不受參數影響,也不會影響 Analysis Services 的即時或 DirectQuery 連線。 無論開關是否已關閉,這些都會繼續運作。 此外,在 Power BI 語意模型上使用複合模型的任何已發佈報表,即使在發佈之後已關閉參數,仍會繼續運作。

在語意模型或模型上建置複合模型

在 Power BI 語意模型或 Analysis Services 模型上建置複合模型需要報表具有本機模型。 您可以從即時連線開始,並新增或升級至本機模型,或從 DirectQuery 連線或匯入的數據開始,以自動在報表中建立本機模型。

若要查看模型中正在使用哪一個連線,請檢查 Power BI Desktop 右下角的狀態列。 如果您只連線到 Analysis Services 來源,您會看到類似下圖的訊息:

Screenshot showing Analysis Services only connection.

如果您已連線到 Power BI 語意模型,您會看到一則訊息,告知您連接的 Power BI 語意模型:

Screenshot showing Power BI semantic model connection.

如果您想要自定義即時連線語意模型中欄位的元數據,請在狀態列中選取 [變更此模型 ]。 或者,您也可以選取功能區中的 [ 變更此模型] 按鈕,如下圖所示。 在 [報表檢視] 的 [模型] 索引標籤中,變更此模型按鈕。在 [模型檢視] 中,按鈕位於 [首頁] 索引卷標中。

Screenshot showing Make changes to this model button.

選取按鈕會顯示一個對話框,確認新增本機模型。 選取 [新增本機模型 ] 以啟用從 Power BI 語意模型或 Analysis Services 建立新數據行或修改元數據。 下圖顯示顯示的對話框。

Screenshot showing Create local model dialog.

當您即時連線到 Analysis Services 來源時,沒有本機模型。 若要針對即時連線來源使用 DirectQuery,例如 Power BI 語意模型和 Analysis Services,您必須將本機模型新增至報表。 當您將具有本機模型的報表發行至 Power BI 服務 時,該本機模型的語意模型會發行良好。

連結

語意模型和其基礎 為鏈結的語意模型。 此程式稱為 鏈結,可讓您根據其他 Power BI 語意模型發佈報表和語意模型,這是先前不可能的功能。

例如,假設您的同事發佈名為 Sales 和 Budget 的 Power BI 語意模型,該模型是以名為 Sales 的 Analysis Services 模型為基礎,並將它與名為 Budget 的 Excel 工作表合併。

當您發佈名為 Sales and Budget Europe 的新報表(和語意模型)時,該報表是以同事所發佈的 Sales 和 Budget Power BI 語意模型為基礎,因此,您可以像執行此動作一樣進行一些進一步的修改或延伸,將報表和語意模型有效地新增至長度為 3 的鏈結,其開頭為 Sales Analysis Services 模型, 並以您的 Sales 和 Budget Europe Power BI 語意模型結尾。 下圖將這個鏈結程式可視化。

Screenshot showing The process of chaining semantic models.

上一個影像中的鏈結長度為三,這是最大長度。 不支援延伸超過三個鏈結長度,並導致錯誤。

權限和授權

使用複合模型存取報表的用戶必須具有鏈結中所有語意模型和模型的適當許可權

複合模型的擁有者需要 作為來源的語意模型建 置許可權,讓其他使用者可以代表擁有者存取這些模型。 因此,在 Power BI Desktop 中建立複合模型連接,或在 Power BI 中撰寫報表需要建置許可權,才能使用作為來源的語意模型。

使用複合模型檢視報表的使用者通常需要 複合模型本身的讀取 許可權,以及做為來源的語意模型。 如果報表位於 Pro 工作區中,可能需要建 置許可權。 應該為使用者啟用這些租使用者交換 器。

您可以使用下列範例來說明所需的權限:

  • 複合模型 A (擁有者 A 擁有

    • 數據源 A1: 語意模型 B
      擁有者 A 必須具有語意模型 B建置許可權,使用者才能使用複合模型 A 來檢視報表。
  • 複合模型 C (擁有者 C 擁有

    • 數據源 C1: 語意模型 D
      擁有者 C 必須具有語意模型 D建置許可權,使用者才能使用複合模型 C 檢視報表。
    • 數據源 C2: 複合模型 A
      擁有者 C 必須具有複合模型 A建置許可權,以及語意模型 B讀取許可權。

使用複合模型 A 檢視報表的使用者必須同時具有複合模型 A語意模型 B 的讀取許可權,而使用複合模型 C 的使用者檢視報表必須具有複合模型 C語意模型 D複合模型 A 和語意模型 B讀取許可權

注意

如需 Power BI 語意模型和 Analysis Services 模型上複合模型所需許可權的重要資訊,請參閱此部落格文章。

如果鏈結中的任何數據集位於 進階版 Per User 工作區中,則存取該數據集的使用者需要 進階版 每位用戶授權。 如果鏈結中的任何數據集位於 Pro 工作區中,則存取它的使用者需要 Pro 授權。 如果鏈結中的所有數據集都位於 進階版 容量Fabric F64 或更大容量上,則使用者可以使用免費授權來存取它

安全性警告

使用適用於 Power BI 語意模型和 Analysis Services 功能的 DirectQuery 會顯示安全性警告對話方塊,如下圖所示。

Screenshot showing Security warning.

數據可能會從某個數據源推送至另一個數據源,這與在數據模型中結合 DirectQuery 和匯入來源時的安全性警告相同。 若要深入瞭解此行為,請參閱 在Power BI Desktop中使用複合模型。

支援的案例

您可以使用 Power BI 語意模型或 Analysis Services 模型的數據來建置複合模型,以服務下列案例:

  • 從各種來源 連線 數據:匯入(例如檔案)、Power BI 語意模型、Analysis Services 模型
  • 建立不同數據源之間的關聯性
  • 撰寫使用不同數據源欄位的量值
  • 從 Power BI 語意模型或 Analysis Services 模型建立數據表的新數據行
  • 建立使用不同數據源之數據行的視覺效果
  • 您可以使用欄位清單從模型中移除資料表,讓模型盡可能精簡且精簡(如果您連接到檢視方塊,則無法從模型移除資料表)
  • 您可以指定要載入的數據表,而不需要在只想要特定數據表子集時載入所有資料表。 請參閱本檔中稍後的載入數據表子集。
  • 您可以指定在模型中建立連接之後,是否要加入任何後續新增至語意模型的數據表。

根據語意模型使用複合模型

使用適用於 Power BI 語意模型和 Analysis Services 的 DirectQuery 時,請考慮下列事項:

  • 如果您重新整理數據源,而且有衝突欄位或數據表名稱的錯誤,Power BI 會為您解決錯誤。

  • 您無法在相同的 Power BI 語意模型或 Analysis Services 來源中編輯、刪除或建立新的關聯性。 如果您有這些來源的編輯存取權,您可以改為直接在數據源中進行變更。

  • 您無法變更從 Power BI 語意模型或 Analysis Services 來源載入的數據行數據類型。 如果您需要變更數據類型,請在來源中變更數據類型,或使用匯出數據行。

  • 若要在以另一個語意模型為基礎的複合模型上建置 Power BI 服務 報表,必須設定所有認證。

  • 連線 SQL Server 2022 和更新版本的 Analysis Services 伺服器內部部署或 IAAS 需要內部部署數據網關(標準模式)。

  • 遠端Power BI語意模型的所有連線都是使用單一登錄建立的。 目前不支援使用服務主體進行驗證。

  • RLS 規則將會套用至定義來源,但不會套用至模型中的任何其他語意模型。 報表中定義的 RLS 不會套用至遠端來源,而遠端來源上設定的 RLS 將不會套用至其他數據源。 此外,您無法在從遠端來源載入的數據表上定義 RLS,而本機數據表上定義的 RLS 將不會篩選從遠端來源載入的任何資料表。

  • KPI、數據列層級安全性和翻譯將不會從來源匯入。

  • 使用日期階層時,您可能會看到一些非預期的行為。 若要解決此問題,請改用日期數據行。 將日期階層新增至視覺效果之後,您可以按下功能變數名稱中的向下箭號,然後按下該欄位的名稱,而不是使用日期階層來切換至日期數據行:

    Screen shot of date hierarchy setting.

    如需使用日期數據行與日期階層的詳細資訊,請參閱 在Power BI Desktop中套用自動日期或時間。

  • 模型鏈結的最大長度為三。 不支援延伸超過三個鏈結長度,並導致錯誤。

  • 不建議在模型上設定鏈結旗標,以防止建立或擴充鏈結。 如需詳細資訊,請參閱 管理已發行語意模型的 DirectQuery 連線。

  • Power BI 語意模型或 Analysis Services 模型的連線將不會顯示在 Power Query 中。

使用 Power BI 語意模型和 Analysis Services 的 DirectQuery 時,適用下列 限制

  • 資料庫和伺服器名稱的參數目前已停用。
  • 不支援在遠端來源的數據表上定義 RLS。
  • 不支援使用下列任何來源做為 DirectQuery 來源:
    • 2022 版之前的 SQL Server Analysis Services (SSAS) 表格式模型
    • SSAS 多維度模型
    • SAP HANA
    • SAP Business Warehouse
    • 即時語意模型
    • 範例語意模型
    • Excel Online 重新整理
    • 從服務上的 Excel 或 CSV 檔案匯入的數據
    • 使用量指標
    • 儲存在「我的工作區」中的語意模型
  • 目前不支援搭配包含 Analysis Services 模型的 DirectQuery 連線的語意模型使用 Power BI Embedded。
  • 不支援使用發佈至 Web 功能將報表發行至 Web。
  • 不支援遠端來源上的計算群組,但未定義的查詢結果。
  • 使用這項功能的服務不支援匯出數據表。 嘗試使用導出數據表或參考 DirectQuery 數據源的匯出數據行,對語意模型執行重新整理會導致「未提供單一登錄 (SSO) 認證」錯誤訊息。
  • 如果您在設定 DirectQuery 連線之後重新命名工作區,您必須更新 Power BI Desktop 中的數據源,報表才能繼續運作。
  • 某些案例僅支持自動頁面重新整理(APR),視數據源類型而定。 如需詳細資訊,請參閱Power BI中的自動頁面重新整理一文
  • 目前不支援使用 DirectQuery 至其他語意模型功能的語意模型
  • 如同任何 DirectQuery 數據源,使用 Excel 連接到 DirectQuery 模式中的模型或語意模型時,不會顯示 Analysis Services 模型或 Power BI 語意模型中定義的階層。

使用 Power BI 語意模型和 Analysis Services 的 DirectQuery 時,需要考慮一些其他事項:

  • 在跨來源群組關聯性中使用低基數數據行: 當您跨兩個不同的來源群組建立關聯性時,參與關聯性的數據行(也稱為聯結數據行)應該具有低基數,理想情況下為 50,000 或更少。 此考慮適用於非字串索引鍵數據行;如需字串索引鍵數據行,請參閱下列考慮。
  • 避免在跨來源群組關聯性中使用大型字串索引鍵數據行: 建立跨來源群組關聯性時,請避免使用大型字串數據行做為關聯性數據行,特別是對於具有較大基數的數據行。 當您必須使用字串數據行做為關聯性數據行時,請將基數 (C) 乘以字串數據行的平均長度來計算篩選的預期字串長度。 請確定預期的字串長度低於 250,000,因此 A ∗ C < 250,000

如需更多考慮和指引,請參閱 複合模型指引

租用戶考慮

任何與 Power BI 語意模型或 Analysis Services 連線的模型都必須發布在相同的租使用者中,這在使用 B2B 來賓身分識別存取 Power BI 語意模型或 Analysis Services 模型時特別重要,如下圖所示。 請參閱可編輯和管理內容的來賓使用者,以尋找要發佈的租使用者 URL。

請考慮下圖。 圖表中的編號步驟會在後續段落中描述。

Diagram of numbered steps for tenant considerations.

在圖表中,Ash 會與 Contoso 搭配運作,並正在存取 Fabrikam 所提供的數據。 Ash 使用 Power BI Desktop,建立與 Fabrikam 租用戶中裝載之 Analysis Services 模型的 DirectQuery 連線。

若要進行驗證,Ash 會使用 B2B 來賓使用者身分識別(圖表中的步驟 1)。

如果報表發佈至 Contoso 的 Power BI 服務 (步驟 2),則 Contoso 租使用者中發佈的語意模型無法成功驗證 Fabrikam 的 Analysis Services 模型 (步驟 3)。 因此,報表將無法運作。

在此案例中,由於使用的 Analysis Services 模型裝載於 Fabrikam 的租使用者中,因此報表也必須發佈在 Fabrikam 的租使用者中。 在 Fabrikam 租使用者中成功發行之後,語意模型可以成功存取 Analysis Services 模型 (步驟 5),且報表會正常運作。

使用物件層級安全性

當複合模型透過 DirectQuery 從 Power BI 語意模型或 Analysis Services 取得數據,且該來源模型受到物件層級安全性保護時,複合模型的取用者可能會注意到非預期的結果。 下一節說明這些結果的發生方式。

物件層級安全性 (OLS) 可讓模型作者隱藏模型取用者(例如報表產生器或複合模型作者)構成模型架構的物件(也就是數據表、數據行、元數據等)。 在為物件設定 OLS 時,模型作者會建立角色,然後移除指派給該角色之用戶的物件存取權。 從這些用戶的觀點來看,隱藏的物件根本不存在。

OLS 已針對來源模型定義並套用。 無法針對建置在來源模型上的複合模型定義它。

當複合模型建置在OLS保護的Power BI語意模型或 Analysis Services 模型透過 DirectQuery 連接之上時,來源模型的模型架構會複製到複合模型。 複製的專案取決於複合模型作者根據在該處套用的 OLS 規則,允許在來源模型中看到的內容。 數據本身不會複製到複合模型,而是在需要時一律透過來源模型的 DirectQuery 擷取。 換句話說,數據擷取一律會回到來源模型,其中會套用 OLS 規則。

由於複合模型不受 OLS 規則保護,所以複合模型取用者看到的物件就是複合模型作者可以在來源模型中看到的物件,而不是它們本身可能有權存取的物件。 這可能會導致下列情況

  • 查看複合模型的人可能會看到 OLS 在來源模型中隱藏的物件。
  • 相反地,由於 OLS 規則控制來源模型的存取權的 OLS 規則會隱藏該物件,所以它們可能不會在來源模型中看到可查看的複合模型中的物件。

重點是,儘管第一個項目符號中所述,但複合模型的取用者永遠不會看到它們不應該看到的實際數據,因為數據實際上不在複合模型中。 相反地,由於 DirectQuery,它會視需要從來源語意模型擷取,其中 OLS 會封鎖未經授權的存取。

考慮到此背景,請考慮下列案例:

Diagram showing what happens when a composite model connects to a source model protected by object-level security.

  1. 管理員_user 已使用 Power BI 語意模型或具有 Customer 數據表和 Territory 數據表的 Analysis Services 模型來發行企業語意模型。 管理員_user 將語意模型發佈至 Power BI 服務,並設定具有下列效果的 OLS 規則:

    • 財務使用者看不到 Customer 數據表
    • 營銷使用者看不到 Territory 數據表
  2. Finance_user發佈稱為「財務語意模型」的語意模型,以及稱為「財務報表」的報表,該報表會透過 DirectQuery 連接到步驟 1 中發佈的企業語意模型。 Finance 報表包含使用 Territory 資料表中數據行的視覺效果。

  3. Marketing_user開啟財務報告。 顯示使用 Territory 數據表的視覺效果,但會傳回錯誤,因為當報表開啟時,DirectQuery 會嘗試使用Marketing_user的認證從來源模型擷取數據,而根據企業語意模型上設定的 OLS 規則,封鎖他們看不到 Territory 數據表。

  4. Marketing_user會建立名為「Marketing Report」 的新報表,以使用 Finance 語意模型作為其來源。 欄位清單會顯示Finance_user可存取的數據表和數據行。 因此,Territory 數據表會顯示在欄位清單中,但 Customer 資料表不是。 不過,當Marketing_user嘗試建立利用 Territory 數據表數據行的視覺效果時,就會傳回錯誤,因為此時 DirectQuery 會嘗試使用Marketing_user的認證從來源模型擷取數據,而 OLS 規則會再次啟動並封鎖存取。 當Marketing_user建立新的語意模型並報告以 DirectQuery 連線連線到 Finance 語意模型時,就會發生同樣的情況,因為它們會在字段清單中看到 Territory 數據表,因為這是Finance_user可以看到的,但是當他們嘗試建立利用該數據表的視覺效果時,它們會被企業語意模型上的 OLS 規則封鎖。

  5. 現在假設 管理員_user 更新企業語意模型上的 OLS 規則,以阻止 Finance 查看 Territory 數據表。

  6. 更新的OLS規則只有在重新整理時才會反映在 Finance 語意模型中。 因此,當Finance_user重新整理 Finance 語意模型時,Territory 數據表將不再顯示在欄位清單中,而使用 Territory 數據表中數據行的視覺效果將會傳回Finance_user的錯誤,因為它們現在不允許存取 Territory 數據表。

總括來說:

  • 複合模型的取用者會在建立模型時,查看適用於複合模型作者的 OLS 規則結果。 因此,當根據複合模型建立新的報表時,欄位清單會顯示複合模型作者在建立模型時可存取的數據表,而不論目前使用者在來源模型中可存取什麼。
  • 複合模型本身無法定義 OLS 規則。
  • 複合模型的取用者永遠不會看到他們不應該看到的實際數據,因為來源模型的相關 OLS 規則會在 DirectQuery 嘗試使用其認證擷取數據時加以封鎖。
  • 如果來源模型更新其 OLS 規則,這些變更只會在重新整理時影響複合模型。

從 Power BI 語意模型或 Analysis Services 模型載入數據表子集

使用 DirectQuery 連接連接到 Power BI 語意模型或 Analysis Services 模型時,您可以決定要連接的數據表。 您也可以選擇在建立模型連接之後,自動新增任何可能新增至語意模型或模型的數據表。 當您連接到檢視方塊時,模型將會包含語意模型中的所有數據表,且檢視方塊中未包含的任何數據表都會隱藏。 此外,任何可能新增至檢視方塊的數據表都會自動新增。 在 [設定] 功能表中,您可以決定在您第一次設定連接之後,自動連接到新增至語意模型的數據表。

即時連線不會顯示此對話框。

注意

只有當您將 DirectQuery 連接新增至 Power BI 語意模型或 Analysis Services 模型至現有的模型時,才會顯示此對話框。 您也可以在建立 Power BI 語意模型之後,將 DirectQuery 連線變更為數據源設定中的 Power BI 語意模型或 Analysis Services 模型,以開啟此對話方塊。

Dialog that allows specifying what tables to load from a Power BI semantic model or Analysis Services model.

設定重複資料刪除規則

您可以使用先前所示對話框中的 [設定] 選項,指定重複資料刪除規則來保留複合模型中唯一的量值和資料表名稱:

Dialog that allows specifying deduplication rules to apply when loading from a semantic model.

在上一個範例中,我們決定將 『(marketing)『 新增為與複合模型中另一個來源衝突之任何數據表或量值名稱的後綴。 請注意,您可以:

  • 輸入要新增至衝突數據表或量值名稱的文字
  • 指定是否要將文字新增至數據表或量值名稱做為前置詞或後綴
  • 將重複資料刪除規則套用至數據表、量值或兩者
  • 只有在發生名稱衝突或一直套用重複資料刪除規則時,才選擇套用重複數據刪除規則。 預設值是只有在重複發生時才會套用規則。 在我們的範例中,銷售來源中沒有重複的任何數據表或量值都不會取得名稱變更。

建立連線並設定重複資料刪除規則之後,您的欄位清單會根據我們範例中設定的重複資料刪除規則,顯示 「客戶」和「客戶(行銷)」:

Dialog that allows specifying deduplication rules to apply when loading from a Power BI semantic model or Analysis Services model.

如果您未指定重複資料刪除規則或您指定的重複資料刪除規則,則不會解決名稱衝突,仍會套用標準重複資料刪除規則。 標準重複數據刪除規則會將數位新增至衝突項目的名稱。 如果 'Customer' 數據表的名稱衝突,其中一個 'Customer' 數據表將會重新命名為 'Customer 2'。

考量與限制

複合模型提供一些考慮和限制:

混合模式連線 - 使用包含在線數據的混合模式連線時(例如 Power BI 語意模型)和內部部署語意模型(例如 Excel 活頁簿),您必須建立閘道對應,才能讓視覺效果正確顯示。

目前, 只有連接到 SQL、Oracle 和 Teradata 數據源的複合模型才支援累加式 重新整理。

下列 Live 連線 表格式來源無法與複合模型搭配使用:

不支援在複合模型中使用串流語意模型。

當您使用複合模型時,DirectQuery 的現有限制仍適用。 根據數據表的儲存模式,這些限制現在都是每個數據表。 例如,匯入數據表上的匯出數據行可以參考不在 DirectQuery 中的其他數據表,但是 DirectQuery 數據表上的匯出數據行仍只能參考相同數據表上的數據行。 如果模型內的任何數據表是 DirectQuery,則其他限制會套用至整個模型。 例如,如果模型中有任何數據表具有 DirectQuery 的儲存模式,則無法在模型上使用 QuickInsights 功能。

如需複合模型和 DirectQuery 的詳細資訊,請參閱下列文章: