Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/powerbi/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Powerbi 在运算符+;转换_Powerbi_Dax - Fatal编程技术网

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")
    )