Powerbi 在运算符+;转换
这里一定有我遗漏的很明显的东西。我正在使用Powerbi 在运算符+;转换,powerbi,dax,Powerbi,Dax,这里一定有我遗漏的很明显的东西。我正在使用SWITCH函数在条形图上创建大约20个条形图,以累积来自不同表的值 SWITCH( VALUE(SELECTEDVALUE(Table1[RowNo])), 1, CALCULATE([m1] + [m2], Table2[Key] IN {"0-5", "05-10"}), 2, CALCULATE([m1] + [m2], Table2[Key] IN {"10-15", "15-20"}), 3, CALCULAT
SWITCH
函数在条形图上创建大约20个条形图,以累积来自不同表的值
SWITCH(
VALUE(SELECTEDVALUE(Table1[RowNo])),
1, CALCULATE([m1] + [m2], Table2[Key] IN {"0-5", "05-10"}),
2, CALCULATE([m1] + [m2], Table2[Key] IN {"10-15", "15-20"}),
3, CALCULATE([m1] + [m2], Table2[Key] IN {"20-25", "25-30"}),
...
)
我想我将在操作符中使用(为了简单起见),而不是使用长版本(第一个条的示例):
计算([m1]+[m2],表2[Key]=“0-5”)+计算([m1]+[m2],表2[Key]=“05-10”)
然而,IN operator似乎不像我想象的那样工作:
计算([m1]+[m2],表2[键]=“0-5”)
->返回10000
计算([m1]+[m2],表2[键]=“05-10”)
->返回20000
长版本:
计算([m1]+[m2],表2[Key]=“0-5”)+计算([m1]+[m2],表2[Key]=“05-10”)
->返回30000(这是我想要的)
短版本(带IN):
CALCULATE([m1]+[m2],表2[Key]在{“0-5”,“05-10”})中返回20000(不正确;在中似乎总是返回第二个引用的值)
你能帮我调整一下公式,让它返回正确的结果(30000)吗?如果需要,我很乐意提供一些进一步的信息
编辑:
下面是一个示例数据集-左表(表1)和右表(表2):
在PowerBI中,这两个表在数据模型中没有任何关系。表2有两项措施:
m1=MAX(表2[F])
m2=MAX(表2[R])
表1还有两个衡量标准(用于比较):
正如您在下面的屏幕截图上看到的,mSwitch和mSwitch2之间存在差异(mSwitch2返回正确的结果):
您的问题不在于开关或中的,而在于MAX
的工作方式
度量值m1
和m2
分别在给定过滤器上下文下的F
和R
列中找到最大值。如果将筛选器上下文限制为Key=“0-5”
,则每个的最大值为5000
,但如果在{“0-5”、“5-10”}
中设置Key,则每个的最大值为10000
如果你想得到一个总和,那么就用sum
而不是MAX
来衡量你的标准。这很奇怪。它看起来确实应该起作用。你能提供一个可以复制这种行为的例子吗?非常感谢你花时间@Alexis,我刚刚用一个小例子更新了我的帖子。表2是什么样子的?m1和m2是如何定义的?哦,它在我的帖子上不可见吗?也许粘贴不正确?我粘贴了表1和表2数据集的屏幕截图,以及m1和m2的计算。如果有帮助的话,很乐意单独粘贴。啊,我现在看到了。必须刷新页面。哦,哇,我不认为MAX在一个潜在的度量中会导致这个问题。最初,我认为每一个都将分别进行评估(给我度量值1的最大值,给我度量值2的最大值,然后返回两者之和)。看起来我又一次陷入了过滤环境中(我希望在5-10年内掌握它…)。无论如何,一如既往,非常感谢您的帮助!
mSwitch =
SWITCH(
VALUE(SELECTEDVALUE(Table1[RowNo])),
1, CALCULATE([m1] + [m2], Table2[Key] IN {"0-5", "05-10"}),
2, CALCULATE([m1] + [m2], Table2[Key] IN {"10-15", "15-20"}),
3, CALCULATE([m1] + [m2], Table2[Key] IN {"20-25", "25-30"})
)
mSwitch2 =
SWITCH(
VALUE(SELECTEDVALUE(Table1[RowNo])),
1, CALCULATE([m1] + [m2], Table2[Key] = "0-5") + CALCULATE([m1] + [m2], Table2[Key] = "05-10"),
2, CALCULATE([m1] + [m2], Table2[Key] = "10-15") + CALCULATE([m1] + [m2], Table2[Key] = "15-20"),
3, CALCULATE([m1] + [m2], Table2[Key] = "20-25") + CALCULATE([m1] + [m2], Table2[Key] = "25-30")
)