更新DAX中变量的值



我需要更改dax:中开关中的变量值

switch( true(),

condition1,
var test1 = 2
var test2 = 3
,condition 2,
var test1 = 4
var test2 = 5
,
var test1 = 7
var test2 = 6       
)

我需要这样做,因为我必须根据条件改变大量的变量,而且我不想每个变量都有一个开关。

我已经用switch尝试过这种方法,它在没有变量的情况下工作。这就像dax不允许在第一次赋值后更改变量的值。


编辑

你好,这是我想要实现的目标的例子:

Value Daily Form = 


SWITCH( true(),
// if both are selected
(ISFILTERED(tblAAA[AAA_name]) && ISFILTERED(tblBBB[BBB_name])),

var Target = sum(F_Daily_AAA_BBB[target])
var TotalPayments = sum(F_Daily_AAA_BBB[vlr_total_payment])

// if AAA is selected
, (ISFILTERED(tblAAA[AAA_name]) && not(ISFILTERED(tblBBB[BBB_name]))),

var Target = sum(F_Daily_AAA[target])
var TotalPayments = sum(F_Daily_AAA[vlr_total_payment])

// if BBB is selected
, (not(ISFILTERED(tblAAA[AAA_name])) && ISFILTERED(tblBBB[BBB_name])),

var Target = sum(F_Daily_BBB[target])
var TotalPayments = sum(F_Daily_BBB[vlr_total_payment])

// none is selected
,

var Target = sum(F_Daily_OR[target])
var TotalPayments = sum(F_Daily_OR[vlr_total_payment])

)

var result =  
SWITCH(FIRSTNONBLANK(tblKPIs[Group_Name], tblKPIs[Group_Name]),
"Target (€)", IF(Target > 0, FORMAT(Target,  "€ #,##"), if(SELECTEDVALUE('Calendar'[isWorkingDay]) = 1, "€ 0", BLANK())), 
"Total Payments (€)", IF(TotalPayments > 0, FORMAT(TotalPayments,  "€ #,##"), IF(SELECTEDVALUE('Calendar'[isWorkingDay]) = 1, "€ 0", BLANK())), 

)
return result    

在开头,我必须修改的代码是:

Value Daily Form = 



var Target = sum(F_Daily_OR[target])
var TotalPayments = sum(F_Daily_OR[vlr_total_payment])


var result =  
SWITCH(FIRSTNONBLANK(tblKPIs[Group_Name], tblKPIs[Group_Name]),
"Target (€)", IF(Target > 0, FORMAT(Target,  "€ #,##"), if(SELECTEDVALUE('Calendar'[isWorkingDay]) = 1, "€ 0", BLANK())), 
"Total Payments (€)", IF(TotalPayments > 0, FORMAT(TotalPayments,  "€ #,##"), IF(SELECTEDVALUE('Calendar'[isWorkingDay]) = 1, "€ 0", BLANK())), 

)
return result    

唯一的区别是,有75个变量而不是2个变量,我不想对它们中的每一个进行切换,因为这会使代码变得稀疏。

此外,我必须修改大约50个充满变量的度量,所以我需要一个像那个开关一样的快速复制粘贴解决方案,它在代码没有变量的其他情况下也能工作。

谢谢你花时间帮助我。

确实如此,因为DAX中的变量实际上是常量。变量是不可变的。您可以将值存储在变量中,但以后不能更改它。

以下是文档中DAX变量的定义:

将表达式的结果存储为命名变量,然后可以将其作为参数传递给其他度量值表达式。一旦为变量表达式计算了结果值,即使在另一个表达式中引用了该变量,这些值也不会更改。

在文档中查找更多信息。

你到底想通过这个实现什么?为每个条件创建单独的度量,然后用切换条件创建另一个度量,这对你来说不可行吗?

最新更新