在 Power BI Desktop 中建立及管理關聯性 (機器翻譯)
如果您有多個資料表,您可能想要使用所有資料表中的資料來進行一些分析。 這些資料表之間的關聯性,對於精確地計算結果並在報表中顯示正確資訊來說是必要的。 在大部分情況下,您不需要採取任何動作。 自動偵測功能會為您自動執行。 不過,有時候,您可能必須自行建立關聯性,或需要對關聯性進行變更。 不論是哪種情況,請務必了解 Power BI Desktop 中的關聯性,以及如何建立和編輯關聯性。
在載入期間自動偵測
若您同時查詢兩個或多個資料表,在載入資料時,Power BI Desktop 會嘗試為您尋找及建立關聯性。 系統會自動設定 [基數]、[交叉篩選方向] 和 [將此關聯性設為作用中] 關聯性選項。 Power BI Desktop 會查看您要查詢資料表中的資料行名稱,以判斷是否有任何可能的關聯性。 如果有,則會自動建立這些關聯性。 如果 Power BI Desktop 不太確定是否有相符項目,則不會建立關聯性。 不過,您仍然可以使用 [管理關聯性] 對話方塊來手動建立或編輯關聯性。
使用自動偵測建立關聯性
在 [模型] 索引標籤上,選取 [管理關聯性]>[自動偵測]。
以手動方式建立關聯性
在 [模型] 索引標籤上,選取 [管理關聯性]>[新增]。
在 [建立關聯性] 對話方塊中,選取第一個資料表下拉式清單中的資料表。 選取您要用於關聯性的資料行。
在第二個資料表下拉式清單中,選取您要用於關聯性的其他資料表。 選取您要使用的其他資料行,然後選取 [確定]。
根據預設,Power BI Desktop 會自動為您的新關聯性設定 [基數] (方向)、[交叉篩選方向] 和 [將此關聯性設為作用中] 選項。 不過,您可以視需要變更這些設定。 如需詳細資訊,請參閱了解其他選項。
如果針對關聯性所選取的資料表都沒有唯一值,您會看到下列錯誤:其中一個資料行必須具有唯一值。 關聯性中的至少一個資料表「必須」具有不同且唯一的索引鍵值清單,這是對於所有關聯式資料庫技術而言常見的需求。
如果您遇到錯誤,有幾種方式可以修正這個問題:
- 使用 [移除重複項目] 來建立具有唯一值的資料行。 這種方法的缺點是,移除重複的資料列時可能會遺失資訊。 索引鍵 (資料列) 通常有充分的理由重複。
- 將由相異索引鍵值清單所組成的中繼資料表新增至模型,然後模型會連結到關聯性中的兩個原始資料行。
如需詳細資訊,請參閱這篇部落格文章。
或者,在模型檢視圖表配置中,您可以將資料行從某個資料表拖放到另一個資料表中的資料行,以建立關聯性。
編輯關聯性
在 Power BI 中,有兩種方式可以編輯關聯性。
第一種編輯關聯性的方法是使用 [模型檢視] 中的 [在屬性中編輯關聯性] 窗格,您可以在其中選取兩個資料表之間的任何一行,在 [屬性] 窗格中查看關聯性選項。 請務必展開 [屬性] 窗格,以查看關聯性選項。
您也可以在 [屬性] 窗格中觀看編輯關聯性的影片示範。
編輯關聯性的另一種方法是使用 [關聯性編輯器] 對話方塊,您可以在 Power BI Desktop 中利用許多方式來開啟此對話方塊。 下列清單顯示可以用來開啟 [關聯性編輯器] 對話方塊的不同方式:
從 [報表檢視] 中,執行下列任一動作:
- 選取 [模型化] 功能區 >[管理關聯性],然後選取關聯性,接著選取 [編輯]。
- 在 [欄位] 清單中選取資料表,然後選取 [資料表工具] 功能區>[管理關聯性],接著選取關聯性,然後選取 [編輯]。
從 [資料] 檢視中選取 [資料表工具] 功能區>[管理關聯性],接著選取關聯性,然後選取 [編輯]。
從 [模型] 檢視執行下列任何動作:
- 選取 [首頁] 功能區>[管理關聯性],接著選擇關聯性,然後選取 [編輯]。
- 在兩個資料表之間的任一行上按兩下。
- 以滑鼠右鍵按一下兩個資料表之間的任一行,然後選擇 [屬性]。
- 選取兩個資料表之間的任一行,然後選擇 [屬性] 窗格中的 [開啟關聯性編輯器]。
最後,您也可以從任何檢視編輯關聯性,以滑鼠右鍵按一下或選取省略符號以顯示任何資料表的操作功能表,然後選取 [管理關聯性],選取關聯性,接著選取 [編輯]
下圖顯示 [編輯關聯性] 視窗的螢幕擷取畫面。
使用不同方法來編輯關聯性
使用 [編輯關聯性] 對話方塊是在 Power BI 中編輯關聯性引導性較高的體驗,目前處於預覽狀態。 您可以在每個資料表中查看資料預覽。 當您選取不同的資料行時,視窗會自動驗證關聯性,並提供適當的基數和交叉篩選選取項目。
在 [屬性] 窗格中編輯關聯性,是在 Power BI 中編輯關聯性的簡化方法。 您只會看到可以選擇的資料表名稱和資料行,系統不會向您顯示資料預覽,且只有在您選取 [套用變更] 時,系統才會驗證您選擇的關聯性。 使用 [屬性] 窗格及其簡化方法可減少編輯關聯性時所產生的查詢數目,這對於巨量資料案例而言可能很重要,尤其是在使用 DirectQuery 連線時。 相較於在 [編輯關聯性] 對話方塊中允許建立的關聯性,使用 [屬性] 窗格建立的關聯性更高階。
您也可以在 [模型] 檢視圖表配置中,按下 Ctrl 鍵並選取多條線,即可選擇多個關聯性。 您可以在 [屬性] 窗格中編輯通用屬性,而 [套用變更] 會處理在單一交易中所做的變更。
您也可以按下鍵盤上的 [Delete] 鍵,刪除單一或多重選取的關聯性。 您無法復原刪除動作,因此對話方塊會提示您確認刪除關聯性。
重要
[在屬性中編輯關聯性] 窗格功能目前處於預覽狀態。 在預覽狀態時,功能和文件可能會變更。 您必須在 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 工作表 (標題除外),選取所有資料格,然後選取 [插入]>[資料表]。
- 在 [建立資料表] 對話方塊中,選取 [確定]。
- 選取任何資料表資料格,選取 [資料表設計]>[資料表名稱],然後輸入[專案時數]。
- 針對 [公司專案] 資料表執行相同的動作。
- 使用 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 | Orange | 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 | Orange | 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 的專案清單。
公司專案
ProjName | 優先順序 |
---|---|
藍色 | A |
紅 | B |
綠 | C |
黃色 | C |
紫色 | B |
Orange | 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 可自動為關聯性決定最佳基數。 如果您知道資料在未來會變更,因此需要覆寫自動設定,則可以使用 [基數] 控制項進行變更。 以下是需要選取不同基數的範例。
[公司專案優先順序] 資料表列出所有公司專案及其優先順序。 [專案預算] 資料表顯示已核准預算的一組專案。
公司專案優先順序
ProjName | 優先順序 |
---|---|
藍色 | A |
紅 | B |
綠 | C |
黃色 | C |
紫色 | B |
Orange | C |
ProjectBudget 資料表
核准的專案 | 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 而言,這兩個資料表的最佳組合會如下所示:
ProjName | 優先順序 | BudgetAllocation | AllocationDate |
---|---|---|---|
藍色 | A | 40,000 | 12/1/2012 |
紅 | B | 100,000 | 12/1/2012 |
綠 | C | 50,000 | 12/1/2012 |
黃色 | C | ||
紫色 | B | ||
Orange | C |
由於合併資料表的 [專案名稱] 資料行沒有重複的值,因此兩個資料表之間有一對一關聯性。 因為每個值只會出現一次,所以 [專案名稱] 資料行是唯一的;因此,您可以直接合併兩個資料表中的資料列,而不會有任何重複項目。
但假設您知道資料將會在下次重新整理時變更。 重新整理後的 [專案預算] 資料表版本現在會有代表 [藍色] 和 [紅色] 專案的額外資料列:
專案預算
核准的專案 | BudgetAllocation | AllocationDate |
---|---|---|
藍色 | 40,000 | 12/1/2012 |
紅 | 100,000 | 12/1/2012 |
綠 | 50,000 | 12/1/2012 |
藍色 | 80,000 | 2013/6/1 |
紅 | 90,000 | 2013/6/1 |
這些額外資料列表示這兩個資料表的最佳組合現在會如下所示:
ProjName | 優先順序 | BudgetAllocation | AllocationDate |
---|---|---|---|
藍色 | A | 40,000 | 12/1/2012 |
紅 | B | 100,000 | 12/1/2012 |
綠 | C | 50,000 | 12/1/2012 |
黃色 | C | ||
紫色 | B | ||
Orange | C | ||
藍色 | A | 80000 | 2013/6/1 |
紅 | B | 90000 | 2013/6/1 |
在這個新的合併資料表中,[專案名稱] 資料行有重複的值。 重新整理資料表之後,兩個原始資料表將不會有一對一關聯性。 在這種情況下,由於我們知道這些未來更新會導致 [專案名稱] 資料行有重複項目,因此想要將 [基數] 設定為 [多對一 (*:1)],其中「多」端位於 [專案預算],而「一」端位於 [公司專案優先順序]。
調整一組複雜資料表及關聯性的交叉篩選方向
大多數關聯性的交叉篩選方向會設定為 [雙向]。 不過,在某些較不常見的情況下,您可能需要將此選項設定為預設值以外的設定。 例如,如果您要從舊版的 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 | Orange | 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 | Orange | 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 |
員工角色
員工 | Role |
---|---|
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 會新增的隱含條件約束,以確保傳回相關資料。
透過購買資料表執行此相互關聯,我們可以傳回在事實資料表中至少一個產品廠商配對項目,從資料的觀點來看,配對是有意義的。 您可以預期從未產生銷售業績的產品-廠商所構成的任何亂七八糟組合 (對於分析完全沒有用),都不會顯示。
案例 2:提供傳統的星型結構描述和量值條件約束。 在案例 1 的上一個範例中,如果使用者以彙總資料行的形式提供條件約束 (例如,購買數量的總和/平均值/計數) 或模型量值 (VendID 的相異計數),Power BI 就能以下列範例的形式產生查詢:
Correlate Product[Color] with Vendor[Name] where MeasureConstraint is not blank
在這種情況下,Power BI 會嘗試傳回對使用者所提供的條件約束有意義的值組合 (非空白)。 Power BI 不需要也新增自己的隱含條件約束 CountRows(Purchases)>0,例如先前案例 1 中所做的,因為使用者所提供的條件約束已足夠。
案例 3:非星型結構描述和未提供量值條件約束。 在此案例中,我們會將注意力集中在模型的中心,其中我們有銷售額 - 產品 - 購買資料表,而在這裡我們有一個維度資料表 (產品) 和兩個事實資料表 (銷售額和購買)。 由於此範例不是星型結構描述,因此無法回答案例 1 中相同的問題。 假設我們嘗試將購買和銷售額相互關聯,因為購買與產品有多對 1 關聯性,而產品與銷售額有 1 對多關聯性。 銷售額和購買是間接多對多。 我們可以將一個產品連結到許多購買,並將一個產品連結到許多銷售額,但我們無法將一個銷售額連結到許多購買,反之亦然。 我們只能將許多購買連結至許多銷售額。
在此情況下,如果我們嘗試在視覺效果中結合 Purchase[VenID] 和 Sales[CustID],Power BI 就沒有可套用的具體條件約束,因為這些資料表之間有多對多關聯性。 雖然可能會在各種案例中套用自訂條件約束 (不一定源於模型中建立的關聯性),但 Power BI 無法僅根據關聯性來推斷預設條件約束。 如果 Power BI 嘗試傳回這兩個資料表的所有組合,則會建立大型交叉聯結,並傳回非相關資料。 Power BI 則改為在視覺效果中引發錯誤,例如下列範例。
案例 4:非星型結構描述和提供的量值條件約束。 如果我們以案例 3 為例,並以彙總資料行 (例如 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 嘗試在視覺效果中尋找資料行之間的關聯性時,會將此案例視為黑盒子,並假設使用者知道他們用它來做什麼。 不過,採用加總、平均以及從使用者介面選擇類似彙總格式的彙總資料行,只能依據該資料行所屬的資料表關聯性,與視覺效果中使用的資料行/資料表子集相關聯。 因此,條件約束會套用至資料行的部分配對,但不是全部。 在此情況下,Power BI 會嘗試依照使用者提供的條件約束 (例如案例 1),尋找未關聯的資料行可以套用的預設條件約束。 如果 Power BI 找不到任何條件約束,則會傳回下列錯誤。
解決關聯性錯誤
當您看到無法判斷欄位之間的關聯性錯誤時,可以採取下列步驟來嘗試解決錯誤:
檢查您的模型。 模型的設定是否適合您要從分析中回答的問題類型? 您可以變更資料表之間的一些關聯性嗎? 您是否可以避免建立間接多對多?
請考慮將反向的 V 形狀結構描述轉換成兩個資料表,並在資料表之間使用直接多對多關聯性,如在 Power BI Desktop 中套用多對多關聯性所述。
以彙總資料行或模型量值的形式,將條件約束新增至視覺效果。
如果加入彙總資料行,且仍然發生錯誤,請考慮使用模型量值。
相關內容
如需模型和關聯性的詳細資訊,請參閱下列文章: