您的问题的本质已在此主题中提出并涵盖:
答案是否定的,但我可以提出解决方法。
Rank
,用于确定销售额最高的门店。您可以使用RANKX函数来实现。StoreName
的计算列,它返回文本值"The biggest store"
(或"Top 1"
- 或其他任何值),并为所有其他门店保留原始名称。使用IF函数。"The biggest store"
值的StoreName
列放入切片器中。StoreName
列进行排序,以便The biggest store
浮动到切片器的顶部位置。这里是如何通过另一列对该列进行排序的方法。由于总是会有一家销售额最高的门店,因此您可以始终在切片器中选择该值,并始终显示数据。
在这个例子中,"The biggest store"
是“女孩店”。我在切片器上保持它被选中。然后我从事实表中删除了该店的所有记录。应用更改。现在切片器仍然被选为"The biggest store"
,但现在最大的商店意味着“瓢虫店”。
这是一个包含M和DAX两种方法的示例文件下载链接:
您可以通过添加计算表来完全使用DAX创建DimStore表:DimStore_DAX =
SUMMARIZECOLUMNS (
Sales[Store],
"Sales", [Sale],
"Rank", RANKX ( ALL ( Sales[Store] ), [Sale] ),
"StoreName", IF ( RANKX ( ALL ( Sales[Store] ), [Sale] ) = 1, "The biggest store", VALUES ( Sales[Store] )
)
)
这只是因为它是您的默认值,否则一旦从基础中删除,切片器应该自动失去值。如果可能的话,请将默认值更改为反映存储值,确保它始终存在。我相信即使没有数据,也会保留默认值。另一种方法是默认为所有商店,然后让用户选择所需内容。由于我不了解您的具体要求,这可能不是您要寻找的,但希望能帮助您找到解决方案。