Power BI為單個(gè)列提供切片器,但是在某些情況下,將單個(gè)切片器中多個(gè)列的替代過(guò)濾器合并起來(lái)可能很有用。從技術(shù)上講,通過(guò)標(biāo)準(zhǔn)的可視化視圖在Power BI中是不可能的,但是您可以使用特定的數(shù)據(jù)建模技術(shù)來(lái)獲得所需的結(jié)果。
考慮具有地理層次結(jié)構(gòu)(具有Continent, Country和 State)的Customer表的情況 。要求是使用單個(gè)切片器在加利福尼亞州(州),法國(guó)(國(guó)家)或亞洲(大陸)上啟用過(guò)濾器,如以下屏幕截圖所示。
實(shí)施解決方案所需的第一步是在“ 客戶” 表中創(chuàng)建一個(gè)計(jì)算列,該列 定義過(guò)濾器的粒度。因?yàn)?nbsp; 州 可能不是唯一的,所以我們 通過(guò)將State 和 Country串聯(lián)起來(lái)在Customer表中 創(chuàng)建一個(gè)計(jì)算列 。在 大陸 不需要列,因?yàn)槊總(gè) 國(guó)家 只能屬于一個(gè) 大陸 -在不同的情況下,可以考慮連接所有定義為表的每一行的唯一值的列。
StateCountry = COMBINEVALUES(“ |”,Customer [州],Customer [CountryRegion])
該 StateCountry 需要列創(chuàng)建表的關(guān)系 切片 昭示著在單個(gè)項(xiàng)目可能的選擇。這樣的表具有一個(gè) Slicer [Selection] 列,其中在切片器中顯示的每個(gè)項(xiàng)目至少具有一個(gè)值,并且StateCountry 值的所有組合都 針對(duì)每個(gè)可能的選擇進(jìn)行過(guò)濾。
通過(guò)這種方式獲得的 Slicer表必須在Slicer [StateCountry] 和 Customer [StateCountry]之間具有關(guān)系 。此關(guān)系具有許多基數(shù)和單個(gè)過(guò)濾器方向,因此 Slicer 過(guò)濾“ 客戶” (而不是相反)。
切片器= DISTINCT(聯(lián)合(SELECTCOLUMNS(客戶,“選擇”,Customer [州],“ StateCountry”,客戶[StateCountry]),SELECTCOLUMNS(客戶,“選擇”,Customer [CountryRegion],“ StateCountry”,客戶[StateCountry] ),SELECTCOLUMNS(客戶,“選擇”,客戶[Continent],“ StateCountry”,客戶[StateCountry]))))
現(xiàn)在模型準(zhǔn)備就緒。通過(guò)在切片器中選擇一個(gè)項(xiàng)目,可以將過(guò)濾器應(yīng)用于“ 切片器[選擇]” 列。 由于在上一步中創(chuàng)建的關(guān)系,此過(guò)濾器自動(dòng)傳播到Customer [StateCountry]列 。這是支持本文開(kāi)頭顯示的報(bào)告的模型。
顯然, Slicer [Selection] 可以用作視覺(jué)對(duì)象中的常規(guī)列。以下屏幕截圖顯示了一個(gè)矩陣,其中澳大利亞的銷售分為兩行:亞洲和澳大利亞。每當(dāng)報(bào)告中涉及多對(duì)多基數(shù)關(guān)系時(shí),該度量是非累加的,并且“總計(jì)”顯示的數(shù)字不是可見(jiàn)行的總和-總計(jì)對(duì)應(yīng)于考慮到每個(gè)狀態(tài)的選定狀態(tài)的累積數(shù)量?jī)H陳述一次。
對(duì)于具有幾百個(gè)唯一值的關(guān)系基數(shù)的模型,此解決方案應(yīng)該很好用。如果 Slicer [StateCountry] 列具有數(shù)千個(gè)或更多的唯一值,則最好考慮一種基于物理強(qiáng)關(guān)系的方法,該方法依賴于使用Slicer [StateCountry]的唯一值創(chuàng)建的中間表 。在不支持關(guān)系中多對(duì)多基數(shù)的Analysis Services版本中,還可以使用以下技術(shù)。您可以 使用以下計(jì)算的表定義創(chuàng)建中間表 StateCountry:
StateCountry = ALLNOBLANKROW ( Slicer[StateCountry] )
使用以下命令復(fù)制DAX公約代碼#3格式代碼
通過(guò)啟用Slicer 表 和 StateCountry表之間的雙向過(guò)濾器 (應(yīng)將其隱藏在報(bào)表視圖中),您將獲得多對(duì)多基數(shù)關(guān)系的相同結(jié)果,并提高了性能。
每當(dāng)您要在單個(gè)列中顯示表的不同列中本機(jī)存在的值時(shí),本文提供的技術(shù)就很有用,以提供更好的用戶體驗(yàn)和簡(jiǎn)化的報(bào)表用戶界面。
關(guān)注 CDA人工智能學(xué)院 ,回復(fù)“錄播”獲取更多人工智能精選直播視頻!