dax - 返回最大类别作为基于 DAX 的动态过滤条件中的度量
问题描述
我想在 DAX 中构建一个度量,以使用响应报告中的过滤器的标准返回最大的类别(根据数据计算)。我拥有的数据取自 Power Query,我在 Excel 中而不是直接在 Power BI 中执行此操作。
下面的数据是我正在尝试做的一个例子。使用此数据,我想返回对于应用于该数据的任何过滤器组合而言,哪个位置的销售额最高。仅过滤实体 A,该度量应返回“加拿大”,因为加拿大的实体 A 总销售额为 673+280=953,而美国为 196+715=911,但过滤实体 A 和 2021 应返回“美国”,因为总和2021 年美国与实体 A 相关的销售额为 715,而加拿大为 280。
地点 | 实体 | 年 | 销售量 |
---|---|---|---|
美国 | 一个 | 2020 | 196 |
美国 | 一个 | 2021 | 715 |
美国 | 乙 | 2020 | 932 |
美国 | 乙 | 2021 | 868 |
加拿大 | 一个 | 2020 | 673 |
加拿大 | 一个 | 2021 | 280 |
加拿大 | 乙 | 2020 | 772 |
加拿大 | 乙 | 2021 | 830 |
这是对这个问题的跟进(根据计算和标准在 DAX 中将最大的类别作为额外的列或度量返回),它已经提供了一个很好的答案,并且适用于特定的提供的标准。但是,我的实际数据中有大约 20 个字段,我想为(和其他类别)返回最大的位置,并且为每个组合构建单独的度量值太耗时了。
解决方案
使它像这样动态的基本功能是使用ALLSELECTED。这是一个具有复杂行为的函数,但如果您避免在迭代器中使用它,则使用起来并不难。
Top Location =
VAR Summary =
SUMMARIZE (
ALLSELECTED ( Table1 ),
Table1[Location],
"@SumSales", SUM ( Table1[Sales] )
)
RETURN
MAXX ( TOPN ( 1, Summary, [@SumSales], DESC ), Table1[Location] )
您仍然可以将非切片器过滤器应用于表。例如,代替ALLSELECTED ( Table1 )
, 写
FILTER ( ALLSELECTED ( Table1 ), Table1[Status] = "Live" )
推荐阅读
- python - 如何检查多个子字符串以获取python中的列名?
- hiveql - hive 1.1 中是否有任何日期函数来找出月份差异,如months_between 或 datediff(month,day1,day2)
- c++ - 语义操作后丢弃解析结果
- css - 在 Chrome 中的媒体查询中混合 calc 中的单位
- amazon-web-services - 如何将 DynamoDB 表地址和 Redis 端口和地址传递给 CloudFormation 中的 EC2 实例?
- angular - 如果用户没有响应,如何自动关闭网页?
- linux - 根据严重性将 kea-dhcp4 服务器日志推送到不同的文件
- android - 任务“:app:fabricGenerateResourcesRelease”执行失败
- python-3.x - 使用连接仅合并 keras 中的某些通道
- java - 为什么我不能覆盖 Fragment.onAttach(Context context)?