在 Power BI Desktop 中建立和管理關聯性
當匯入多個資料表時,您可能想要使用所有資料表中的資料來進行一些分析。 這些資料表之間必須有關聯性才能正確地計算結果,並在報表中顯示正確資訊。 Power BI Desktop 可讓您輕鬆地建立這些關聯性。 事實上,在大多數情況下,您不必執行任何動作,[自動偵測] 功能會為您完成這項作業。 不過,有時候,您可能必須自行建立關聯性,或需要對關聯性進行變更。 不論是哪種情況,請務必了解 Power BI Desktop 中的關聯性,以及如何建立和編輯關聯性。
在載入期間自動偵測
若您同時查詢兩個或多個資料表,在載入資料時,Power BI Desktop 會嘗試為您尋找及建立關聯性。 系統會自動設定 [基數]、[交叉篩選方向] 和 [將此關聯性設為作用中] 關聯性選項。 Power BI Desktop 會查看您要查詢資料表中的資料行名稱,以判斷是否有任何可能的關聯性。 如果有,則會自動建立這些關聯性。 如果 Power BI Desktop 不太確定是否有相符項目,則不會建立關聯性。 不過,您仍然可以使用 [管理關聯性] 對話方塊來手動建立或編輯關聯性。
使用自動偵測建立關聯性
在 [模型]索引標籤上,選取 [管理關聯性>][自動偵測]。

以手動方式建立關聯性
在 [模型化]索引標籤上,選取 [管理關聯性>][新增]。
在 [建立關聯性] 對話方塊中,選取第一個資料表下拉式清單中的資料表。 選取您要用於關聯性的資料行。
在第二個資料表下拉式清單中,選取您要用於關聯性的其他資料表。 選取您想要使用的其他資料行,然後選取 [ 確定]。

根據預設,Power BI Desktop 會自動為您的新關聯性設定 [基數] (方向)、[交叉篩選方向] 和 [將此關聯性設為作用中] 選項。 不過,您可以視需要變更這些設定。 如需詳細資訊,請參閱了解其他選項。
如果針對關聯性所選取的資料表都沒有唯一值,則您會看到下列錯誤:「其中一個資料行必須具有唯一值」。 關聯性中的至少一個資料表「必須」具有不同且唯一的索引鍵值清單,這是對於所有關聯式資料庫技術而言常見的需求。
如果您遇到錯誤,有幾種方式可以修正這個問題:
- 使用 [移除重複項目] 來建立具有唯一值的資料行。 這個方法的缺點是,移除重複的資料列時您可能會遺失資訊;索引鍵 (資料列) 會重複通常都有好理由。
- 將由相異索引鍵值清單所組成的中繼資料表新增至模型,然後模型會連結到關聯性中的兩個原始資料行。
如需詳細資訊,請參閱這篇部落格文章。
編輯關聯性
在 [ 模型] 索引標籤上,選取 [管理關聯性]。
在 [管理關聯性] 對話方塊中,選取關聯性,然後選取 [編輯]。
設定其他選項
您可在建立或編輯關聯性時設定其他選項。 根據預設,Power BI Desktop 會根據其最佳猜測自動設定其他選項,而每個關聯性的最佳猜測,可能會根據資料行中的資料有所不同。
基數
[基數] 選項可具有下列其中一項設定:
多對一 (*:1) :多對一關聯性是最常見的預設關聯性類型。 這表示在指定的資料表中,資料行的某個值可以有多個執行個體,而在其他相關資料表 (通常稱為查閱資料表) 中,某個值只能有一個執行個體。
一對一 (1:1) :在一對一關聯性中,一個資料表中資料行只能有特定值的一個執行個體,而其他相關資料表只能有特定值的一個執行個體。
一對多 (1:*) :在一對多關聯性中,一個資料表中資料行只能有特定值的一個執行個體,而其他相關資料表可以有特定值的多個執行個體。
多對多 (*:*) :使用複合模型時,您可以在資料表之間建立多對多關聯性,以移除資料表中唯一值的需求。 此方法也會移除先前的因應措施,像是只為建立關聯性而導入新的資料表。 如需詳細資訊,請參閱多對多基數關聯性。
如需何時變更基數的詳細資訊,請參閱了解其他選項。
交叉篩選方向
[交叉篩選方向] 選項可具有下列其中一項設定:
雙向:這表示用於篩選時,兩個資料表會視為一個資料表。 [兩者]設定都適用于具有許多圍繞它的查閱表格的單一資料表。 例如,以下是具有部門查閱資料表的銷售實際值資料表。 此設定通常稱為星型結構描述設定 (一個具有多個查閱資料表的中央資料表)。 不過,如果您有兩個或多個資料表也有查閱資料表 (並共用一些資料表),則不會想要使用 [雙向] 設定。 延續上一個範例,在這種情況下,您也會有一個預算銷售資料表,來記錄每個部門的目標預算。 而部門資料表會同時連接到銷售與預算資料表。 請避免針對這種設定使用 [雙向] 設定。
單向:最常見的預設方向,這表示已連接資料表中的篩選選項會套用至彙總值所在資料表。 如果您匯入 Excel 2013 或更早版本的 Power Pivot 資料模型,所有關聯性都會是單向。
如需何時變更交叉篩選方向的詳細資訊,請參閱了解其他選項。
將此關聯性設為作用中
核取時,這個關聯性會成為作用中的預設關聯性。 如果兩個資料表之間有多個關聯性,作用中的關聯性可讓 Power BI Desktop 自動建立包含兩個資料表的視覺效果。
如需何時將特定關聯性設為作用中的詳細資訊,請參閱了解其他選項。
了解關聯性
當透過關聯性將兩個資料表連接在一起之後,您可以使用這兩個資料表中的資料,就像是單一資料表一樣;您不需要擔心關聯性細節,也不需要先將這些資料表扁平化成單一資料表再進行匯入。 在許多情況下,Power BI Desktop 可自動為您建立關聯性。 不過,如果 Power BI Desktop 不太確定兩個資料表之間是否應該有關聯性,則不會自動建立關聯性。 在此情況下,您必須自行建立。
以下將進行一些快速教學課程,讓您更了解關聯性在 Power BI Desktop 中的運作方式。
提示
您可以自行完成這個課程:
- 將下面的 [專案時數] 資料表複製到 Excel 工作表 (標題除外),選取所有資料格,然後選取 [插入]> [資料表]。
- 在 [建立資料表] 對話方塊中,選取 [確定]。
- 選取任何資料表資料格,選取 [資料表設計>資料表名稱],然後輸入ProjectHours。
- 針對 [公司專案] 資料表執行相同的動作。
- 使用 Power BI Desktop 中的 [取得資料] 來匯入資料。 選取這兩個資料表作為資料來源,然後選取 [載入]。
第一個資料表 [專案時數] 是工作票證記錄,其記錄特定人員在特定專案上工作的時數。
專案時數
| 票證 | 提交者 | 時數 | 專案 | 提交日期 |
|---|---|---|---|---|
| 1001 | Brewer, Alan | 22 | 藍色 | 1/1/2013 |
| 1002 | Brewer, Alan | 26 | 紅色 | 2/1/2013 |
| 1003 | Ito, Shu | 34 | 黃色 | 12/4/2012 |
| 1004 | Brewer, Alan | 13 | 橙色 | 1/2/2012 |
| 1005 | Bowen, Eli | 29 | 紫色 | 10/1/2013 |
| 1006 | Bento, Nuno | 35 | 綠色 | 2/1/2013 |
| 1007 | Hamilton, David | 10 | 黃色 | 10/1/2013 |
| 1008 | Han, Mu | 28 | 橙色 | 1/2/2012 |
| 1009 | Ito, Shu | 22 | 紫色 | 2/1/2013 |
| 1010 | Bowen, Eli | 28 | 綠色 | 10/1/2013 |
| 1011 | Bowen, Eli | 9 | 藍色 | 10/15/2013 |
第二個資料表 [公司專案] 是指派優先順序A、 B 或 C 的專案清單。
公司專案
| 專案名稱 | 優先順序 |
|---|---|
| 藍色 | A |
| 紅色 | B |
| 綠色 | C |
| 黃色 | C |
| 紫色 | B |
| 橙色 | C |
請注意,每個資料表都有一個專案資料行。 每個項目的命名方式均略有不同,但其值使各項目看似相同。 這很重要,稍後將會回頭說明。
將兩個資料表匯入模型之後,讓我們來建立報表。 我們所想要取得第一個項目是依專案優先順序提交的時數,因此我們從 [欄位] 窗格選取 [優先順序] 和 [時數]。

如果看一下報表畫布中的資料表,您會看到每個專案的時數為 256,這也是總計。 此數字顯然不正確。 為什麼? 這是因為如果兩個資料表之間沒有關聯性,則無法計算其中一個資料表中的值 ([專案] 資料表中的 [時數]),以另一個資料表中值 ([公司專案] 資料表中 [優先順序]) 交叉篩選後的總和。
接下來,讓我們來建立這兩個資料表之間的關聯性。
還記得我們在這兩個資料表中看到具有專案名稱且其值類似的資料行嗎? 我們將使用這兩個資料行來建立資料表之間的關聯性。
為什麼選擇這兩個資料行? 如果看一下 [專案時數] 資料表中的 [專案] 資料行,我們會看到 [藍色]、[紅色]、[黃色]、[橙色] 等值。 事實上,我們看到多個資料列具有相同值。 我們實際上會對 [專案] 套用許多色彩值。
如果看一下 [公司專案] 資料表中的 [專案名稱] 資料行,我們只會看到專案名稱的唯一色彩值。 這個資料表中的每個色彩值都是唯一的,這很重要,因為如此便可建立兩個資料表之間的關聯性。 在這種情況下,這是多對一關聯性。 在多對一關聯性中,其中一個資料表中的至少一個資料行必須包含唯一值。 有些關聯性還有一些其他選項,我們將在稍後討論。 現在,讓我們來建立這兩個資料表中 [專案] 資料行之間的關聯性。
建立新的關聯性
從 [模型]索引標籤選取[管理關聯性]。
在 [管理關聯性] 中,選取 [新增] 以開啟 [建立關聯性] 對話方塊,讓我們可以從中選取資料表、資料行,以及關聯性所需的其他所有設定。
在第一個下拉式清單中,選取 [專案時數] 作為第一個資料表,然後選取 [專案] 資料行。 這端是關聯性的「多」端。
在第二個下拉式清單中,已預先選取 [公司專案] 作為第二個資料表。 選取 [專案名稱] 資料行。 這端是關聯性的「一」端。
接受關聯性選項的預設值,然後選取 [確定]。

在 [管理關聯性] 對話方塊中,選取 [關閉]。
實際上,這種建立關聯性的做法比較困難。 您可以直接選取 [管理關聯性] 對話方塊中的 [自動偵測]。 事實上,如果兩個資料行有相同的名稱,則在載入資料時,[自動偵測] 就會自動為您建立關聯性。 但這樣做哪裡還有挑戰?
現在,讓我們再看一下報表畫布中的資料表。

看起來比較好,不是嗎?
當我們依 [優先順序] 加總時數時,Power BI Desktop 會尋找 [公司專案] 查閱資料表中唯一色彩值的每個執行個體,並尋找 [專案時數] 資料表中這些值的每個執行個體,然後計算每個唯一值的總和。
就是這麼簡單。 事實上,只要有了 [自動偵測],您甚至可能不必進行這麼多動作。
了解其他選項
透過 [自動偵測] 或以手動方式建立關聯性後,Power BI Desktop 會根據您資料表中的資料,自動設定其他選項。 這些額外的關聯性選項位於 [建立關聯性] 和 [編輯關聯性] 對話方塊的下方。

Power BI 通常會自動設定這些選項,且您不需要進行調整;不過,在幾種情況下,您可能會想要自行設定這些選項。
自動關聯性更新
您可以管理 Power BI 在您報表和模型中,處理及自動調整關聯性的方式。 若要指定 Power BI 如何處理關聯性選項,請從 Power BI Desktop 選取 [檔案]>[選項及設定]>[選項],然後在左窗格中選取 [資料載入]。 [關聯性] 選項隨即顯示。

您可以選取和啟用三個選項:
在第一次載入時從資料來源匯入關聯性:預設會選取此選項。 選取時,Power BI 會檢查您資料來源中定義的關聯性,例如您資料倉儲中的外部索引鍵/主索引鍵關聯性。 如果存在這類關聯性,即會在您一開始載入資料時鏡像到 Power BI 資料模型。 此選項可讓您快速開始使用您的模型,而不需要自行尋找或定義那些關聯性。
在重新整理資料時更新或刪除關聯性:預設不會選取此選項。 如果選取此選項,則 Power BI 會在重新整理您的資料集時,檢查資料來源關聯性中是否有變更。 若那些關聯性發生變更或遭到移除,Power BI 會將那些變更鏡映到其自身的資料模型,更新或刪除他們以使其相符。
警告
如果您正在使用依賴已定義關聯性的資料列層級安全性,則不建議選取此選項。 如果移除 RLS 設定所依賴的關聯性,則您的模型安全性可能會降低。
資料載入後自動偵測新的關聯性:在載入期間自動偵測中將描述此選項。
資料的未來更新需要不同的基數
一般而言,Power BI Desktop 可自動為關聯性決定最佳基數。 如果您知道資料在未來會變更,因此需要覆寫自動設定,則可以使用 [基數] 控制項進行變更。 以下是需要選取不同基數的範例。
[公司專案優先順序] 資料表列出所有公司專案及其優先順序。 [專案預算] 資料表顯示已核准預算的一組專案。
公司專案優先順序
| 專案名稱 | 優先順序 |
|---|---|
| 藍色 | A |
| 紅色 | B |
| 綠色 | C |
| 黃色 | C |
| 紫色 | B |
| 橙色 | C |
專案預算
| 核准的專案 | BudgetAllocation | AllocationDate |
|---|---|---|
| 藍色 | 40,000 | 12/1/2012 |
| 紅色 | 100,000 | 12/1/2012 |
| 綠色 | 50,000 | 12/1/2012 |
如果在 [專案預算] 資料表的 [已核准的專案] 資料行與 [公司專案優先順序] 資料表的 [專案名稱] 資料行之間建立關聯性,則 Power BI 會將 [基數] 自動設定為 [一對一 (1:1)],並將 [交叉篩選方向] 自動設定為 [雙向]。

Power BI 進行這些設定的原因是因為,對 Power BI Desktop 而言,這兩個資料表的最佳組合會如下所示:
| 專案名稱 | 優先順序 | BudgetAllocation | AllocationDate |
|---|---|---|---|
| 藍色 | A | 40,000 | 12/1/2012 |
| 紅色 | B | 100,000 | 12/1/2012 |
| 綠色 | C | 50,000 | 12/1/2012 |
| 黃色 | C | ||
| 紫色 | B | ||
| 橙色 | C |
由於合併資料表的 [專案名稱] 資料行沒有重複的值,因此兩個資料表之間有一對一關聯性。 因為每個值只會出現一次,所以 [專案名稱] 資料行是唯一的;因此,您可以直接合併兩個資料表中的資料列,而不會有任何重複項目。
但假設您知道資料將會在下次重新整理時變更。 重新整理後的 [專案預算] 資料表版本現在會有代表 [藍色] 和 [紅色] 專案的額外資料列:
專案預算
| 核准的專案 | BudgetAllocation | AllocationDate |
|---|---|---|
| 藍色 | 40,000 | 12/1/2012 |
| 紅色 | 100,000 | 12/1/2012 |
| 綠色 | 50,000 | 12/1/2012 |
| 藍色 | 80,000 | 6/1/2013 |
| 紅色 | 90,000 | 6/1/2013 |
這些額外資料列表示這兩個資料表的最佳組合現在會如下所示:
| 專案名稱 | 優先順序 | BudgetAllocation | AllocationDate |
|---|---|---|---|
| 藍色 | A | 40,000 | 12/1/2012 |
| 紅色 | B | 100,000 | 12/1/2012 |
| 綠色 | C | 50,000 | 12/1/2012 |
| 黃色 | C | ||
| 紫色 | B | ||
| 橙色 | C | ||
| 藍色 | A | 80000 | 6/1/2013 |
| 紅色 | B | 90000 | 6/1/2013 |
在這個新的合併資料表中,[專案名稱] 資料行有重複的值。 重新整理資料表之後,兩個原始資料表將不會有一對一關聯性。 在此情況下,由於我們知道這些未來的更新會導致ProjName資料行重複,因此我們想要將基數設定為[多] 為一個 (*:1) ,其中ProjectBudget上的多側和CompanyProjectPriority上的一端。
調整一組複雜資料表及關聯性的交叉篩選方向
大多數關聯性的交叉篩選方向會設定為 [雙向]。 不過,在某些較罕見的情況下,您可能需要將此選項設定為非預設值,例如從舊版 Power Pivot 匯入模型時,每個關聯性會設定為單向。
[雙向] 設定可讓 Power BI Desktop 將已連接的資料表整個視為單一資料表。 不過,在某些情況下,Power BI Desktop 無法將關聯性的交叉篩選方向設定為 [雙向],且也會保留一組明確的預設值以供報告使用。 如果關聯性的交叉篩選方向未設定為 [雙向],通常是因為這會造成模稜兩可的情況。 如果預設交叉篩選設定不適合您,請嘗試將其設定為特定資料表或 [雙向]。
單向交叉篩選適用於許多情況。 事實上,如果您已從 Excel 2013 或更早版本的 Power Pivot 匯入模型,所有關聯性都會設定為單向。 單向表示已連接的資料表中的篩選選項會套用至執行彙總工作的所在資料表。 有時候,了解交叉篩選可能有點困難,因此以下舉例說明。
透過單向交叉篩選,如果您建立彙總專案時數的報表,則可以選擇依 [公司專案] 資料表及其 [優先順序] 資料行或 [公司員工] 資料表及其 [城市] 資料行來進行彙總 (或篩選)。 不過,如果您想要計算每個專案的員工數目 (較不常見的問題),這並不適用。 您會得到一個其值完全相同的資料行。 在下列範例中,兩個關聯性的交叉篩選方向設定為單向:朝向 [專案時數] 資料表。 在 [值] 部分,[專案] 欄位設定為 [計數]:

篩選規格會從 CompanyProject 流向至 ProjectHours (如下圖所示),但不會往上流向至 CompanyEmployee。

不過,如果您將交叉篩選方向設定為 [雙向],則可運作。 [雙向] 設定可讓篩選規格向上流至 [公司員工]。

當交叉篩選方向設定為 [雙向] 時,報表現在看起來正確無誤:

雙向交叉篩選適用於資料表關聯性模式,例如上述模式。 此結構描述最常稱為星型結構描述,如下所示:

交叉篩選方向不適用於資料庫中經常出現的較泛型模式,如下圖所示:

如果您有類似如下具有迴圈的資料表模式,則交叉篩選可能會建立一組模稜兩可的關聯性。 例如,如果您加總資料表 X 中的欄位,然後選擇依資料表 Y 中的欄位進行篩選,則不確定篩選會經由頂端資料表,還是底部資料表。 一個這種模式常見範例是資料表 X 為具有實際值資料的銷售資料表,而資料表 Y 則包含預算資料。 而中間的資料表則是這兩個資料表所使用查閱資料表,例如部門或區域。
如同作用中/非作用中的關聯性,如果會在報表中造成模稜兩可的情況,則 Power BI Desktop 不允許將關聯性設定為 [雙向]。 您有幾種不同的方法可處理這種情況。 以下是最常見的兩種方法:
- 刪除關聯性或將關聯性標示為非作用中,可減輕模稜兩可的情況。 然後,您可以將關聯性的交叉篩選設定為 [雙向]。
- 將資料表帶入兩次 (第二次使用不同的名稱) 以刪除迴圈。 這樣做會使關聯性的模式類似星型結構描述。 在星型結構描述中,所有關聯性都可以設定為 [雙向]。
作用中的關聯性不正確
當 Power BI Desktop 自動建立關聯性時,有時會遇到兩個資料表之間有多個關聯性的情況。 當發生這種情況時,只有其中一個關聯性會設為作用中。 作用中的關聯性會作為預設關聯性,以便您從兩個不同的資料表選擇欄位時,Power BI Desktop 可為您自動建立視覺效果。 不過,在某些情況下,自動選取的關聯性可能不正確。 請使用 [管理關聯性] 對話方塊,將關聯性設定為作用中或非作用中,或在 [編輯關聯性] 對話方塊中,設定作用中的關聯性。
為了確保有預設關聯性,Power BI Desktop 在指定時間,僅允許兩個資料表之間有一個作用中的關聯性。 因此,您必須先將目前的關聯性設定為非作用中,再設定作用中的關聯性。
以下舉例說明。 第一個資料表是 [專案票證],而第二個資料表是 [員工角色]。
專案票證
| 票證 | 開啟者 | 提交者 | 時數 | 專案 | 提交日期 |
|---|---|---|---|---|---|
| 1001 | Perham, Tom | Brewer, Alan | 22 | 藍色 | 1/1/2013 |
| 1002 | Roman, Daniel | Brewer, Alan | 26 | 紅色 | 2/1/2013 |
| 1003 | Roth, Daniel | Ito, Shu | 34 | 黃色 | 12/4/2012 |
| 1004 | Perham, Tom | Brewer, Alan | 13 | 橙色 | 1/2/2012 |
| 1005 | Roman, Daniel | Bowen, Eli | 29 | 紫色 | 10/1/2013 |
| 1006 | Roth, Daniel | Bento, Nuno | 35 | 綠色 | 2/1/2013 |
| 1007 | Roth, Daniel | Hamilton, David | 10 | 黃色 | 10/1/2013 |
| 1008 | Perham, Tom | Han, Mu | 28 | 橙色 | 1/2/2012 |
| 1009 | Roman, Daniel | Ito, Shu | 22 | 紫色 | 2/1/2013 |
| 1010 | Roth, Daniel | Bowen, Eli | 28 | 綠色 | 10/1/2013 |
| 1011 | Perham, Tom | Bowen, Eli | 9 | 藍色 | 10/15/2013 |
員工角色
| 員工 | 角色 |
|---|---|
| Bento, Nuno | 專案經理 |
| Bowen, Eli | 專案負責人 |
| Brewer, Alan | 專案經理 |
| Hamilton, David | 專案負責人 |
| Han, Mu | 專案負責人 |
| Ito, Shu | 專案負責人 |
| Perham, Tom | 專案發起人 |
| Roman, Daniel | 專案發起人 |
| Roth, Daniel | 專案發起人 |
此處實際上有兩個關聯性:
- [員工角色] 資料表的 [員工] 與 [專案票證] 資料表的 [提交者] 之間。
- [專案票證] 資料表的 [開啟者] 與 [員工角色] 資料表的 [員工] 之間。

如果我們將這兩個關聯性新增至模型 (先新增 [開啟者]),則 [管理關聯性] 對話方塊會顯示 [開啟者] 為作用中:

現在,如果我們在報表畫布資料表視覺效果中建立使用 [員工角色] 中 [角色] 和 [員工] 欄位及 [專案票證] 中 [時數] 欄位的報表,我們只會看到專案發起人,因為他們是開啟專案票證的唯一人員。

我們可以變更作用中的關聯性,改為取得 [提交者] 而不是 [開啟者]。 在 [管理關聯性] 中,取消核取 [專案票證 (開啟者)] 與 [員工角色 (員工)] 的關聯性,然後核取 [員工角色 (員工)] 與 [專案票證 (提交者)] 的關聯性。

在關聯性檢視中查看所有關聯性
您的模型有時會有多個資料表,而且資料表之間的關聯性很複雜。 Power BI Desktop 中 [關聯性] 檢視以簡單易懂且可自訂的圖表來顯示您模型中的所有關聯性、其方向和基數。
若要深入了解,請參閱使用 Power BI Desktop 中的關聯性檢視。
疑難排解
本節提供在 Power BI 中使用關聯性時的指引和疑難排解資訊。
無法判斷欄位之間的關聯性
Power BI從所使用的模型推斷關聯性,嘗試在視覺效果中顯示相關資料。 有時候這類推斷並不明顯,而且您可能會意外看到視覺效果中的錯誤,指出某些資料行之間沒有關聯性。
為了說明Power BI如何判斷欄位是否相關,讓我們使用範例模型來說明下列各節中的幾個案例。 下圖顯示我們將在範例案例中使用的範例模型。
案例 1:傳統星型架構,未提供任何量值條件約束。 參照上圖中的範例模型,讓我們先查看廠商 - 購買 - 產品 資料表的影像右邊的一半。 這是傳統星型架構,其中包含 [事實] 資料表 ([購買 ]) ,以及兩個維度資料表 ([產品 ] 和 [ 廠商 ]) 。 維度資料表與事實資料表之間的關聯性是 1 到多 (一個產品對應至許多購買,一個廠商對應至許多購買) 。 在這個架構類型中,我們可以回答產品 X 有哪些銷售? 以及 廠商 Y 銷售的銷售額為何?以及 廠商 Y 銷售哪些產品?
如果我們想要讓 產品 與 廠商相互關聯,我們可以查看 [購買 ] 資料表,以查看是否有專案與相同的產品和廠商。 範例查詢看起來可能如下所示:
Correlate Product[Color] with Vendor[Name] where CountRows(Purchases)>0
where CountRows(Purchases)>0是Power BI會新增的隱含條件約束,以確保傳回相關的資料。
透過 [購買] 資料表執行這項相互關聯,我們可以傳回在事實資料表中至少有一個專案的Product-Vendor配對,從資料的觀點來看是有意義的配對。 您可以預期沒有任何銷售 (不會顯示分析) 的任何不區分Product-Vendor組合。
案例 2:所提供的傳統星型架構和量值條件約束。 在案例 1 的上一個範例中,如果使用者以摘要資料行的形式提供條件約束, (Sum/Average/Count of Purchase Qty,例如) 或模型量值 (Distinct Count of VendID) ,Power BI可以下列形式產生查詢:
Correlate Product[Color] with Vendor[Name] where MeasureConstraint is not blank
在這種情況下,Power BI嘗試傳回對使用者所提供之條件約束有意義的值的組合, (非空白) 。 Power BI不需要也新增自己的CountRows 隱含條件約束, (購買) > 0,例如先前案例 1 中所做的動作,因為使用者所提供的條件約束已足夠。
案例 3:非星型架構,且未提供任何量值條件約束。 在此案例中,我們將焦點放在模型的中心,其中我們有 Sales - Product - Purchases 資料表,其中我們有一個維度資料表 (Product) 和兩個事實資料表 (Sales、 購買) 。 由於這不是星型架構,因此我們無法回答與案例 1 中相同的問題類型。 假設我們嘗試將購買和銷售相互關聯;由於購買與Product具有多對 1關聯性,而Product與Sales、Sales和購買有1 對 1的關聯性間接為「多對多」。 我們可以將一個 產品 連結至多個 購買 專案,並將一個 產品 連結到許多銷售,但無法將一個 銷售 連結到許多 購買 專案,反之亦然。 我們只能將許多 購買 連結至許多 銷售。
在此情況下,如果我們嘗試在視覺效果中結合Purchase[VenID]和Sales[CustID],Power BI沒有可套用的具體條件約束,因為這些資料表之間的「多對多」關聯性。 雖然自訂條件約束 (不一定源自模型中建立的關聯性,) 可以套用到各種案例,Power BI無法只根據關聯性推斷預設條件約束。 如果Power BI嘗試傳回兩個數據表的所有組合,它會建立大型交叉聯結並傳回非相關資料。 Power BI會引發視覺效果中的錯誤,例如下列專案。
案例 4:提供的非星型架構和量值條件約束。 如果我們從案例 3 取得範例,並以摘要資料行的形式新增使用者提供的條件約束, (Product[ProdID] 的 Count of Product[ProdID] 例如,) 或模型量值 (Sales[Total Qty]) Power BI可以使用Correlate Purchase[VenID]和Sales[CustID]的形式產生查詢,其中MeasureConstraint不是空白。
在此情況下,Power BI會遵守使用者的條件約束,因為Power BI必須套用的唯一條件約束,並傳回為其產生非空白值的組合。 使用者已引導Power BI其想要的案例,Power BI套用指引。
案例 5:提供量值條件約束但部分與資料行相關時。 在某些情況下,使用者所提供的量值條件約束與視覺效果中的所有資料行並不完全相關。 模型量值一律與所有專案相關;Power BI嘗試在視覺效果中尋找資料行之間的關聯性時,將此視為黑色方塊,並假設使用者知道他們所使用的動作。 不過,摘要資料行的格式為 Sum、 Average,以及從使用者介面選擇的類似摘要,只能根據該資料行所屬資料表的關聯性,與視覺效果中使用的資料行/資料表子集相關。 因此,條件約束會套用至一些資料行配對,但不適用於所有資料行,在此情況下Power BI嘗試尋找預設條件約束,它可能會套用至使用者所提供的條件約束 (的資料行,例如案例 1) 。 如果找不到任何Power BI,則會傳回下列錯誤。
解決關聯性錯誤
當您看到 無法判斷欄位錯誤之間的關聯性 時,您可以採取下列步驟來嘗試解決錯誤:
檢查您的模型。 是否已針對您想要從分析回答的問題類型適當地設定? 您可以變更資料表之間的某些關聯性嗎? 您可以避免建立間接 多對多嗎?
請考慮將反向V圖形架構轉換成兩個數據表,並使用兩個數據表之間的直接多對多關聯性,如在Power BI Desktop 中套用多對多關聯性中所述。
以摘要資料行或模型量值的形式,將條件約束加入視覺效果。
如果新增摘要資料行,但仍發生錯誤,請考慮使用模型量值。
後續步驟
如需模型和關聯性的詳細資訊,請參閱下列文章: