DAX问题-多列无法转换为标量值错误与计算
DAX question - Multiple columns cannot be converted to a scalar value error with Calculate
我看过其他主题,但我似乎无法将我的情况应用于它们。
我正在执行 CALCULATE 语句并收到有关多列的错误。虽然这似乎是一个简单的错误,但我已尝试删除多列的所有实例,但错误仍然存在。这是我的代码:
IF (
FILTER ( 'ENTERPRISE VIEW', [Total Prod Segment Check] = "1" ),
CALCULATE (
SUM ( 'ENTERPRISE VIEW'[RPC] )
+ SUM ( 'ENTERPRISE VIEW'[New Business] )
+ SUM ( 'ENTERPRISE VIEW'[Retention Premium ] )
+ SUM ( 'ENTERPRISE VIEW'[CurrentTermPremium] )
- SUM ( 'ENTERPRISE VIEW'[Retention Premium ] ),
'ENTERPRISE VIEW'[EffectiveDate] = YEAR ( NOW () )
),
IF (
FILTER ( 'ENTERPRISE VIEW', 'ENTERPRISE VIEW'[EffectiveMonth&Year].[Year] )
= YEAR ( NOW () )
&& FILTER ( 'ENTERPRISE VIEW', [Total Prod Segment Check] = "0" ),
CALCULATE (
SUM ( 'ENTERPRISE VIEW'[RPC] )
+ SUM ( 'ENTERPRISE VIEW'[New Business] )
+ SUM ( 'ENTERPRISE VIEW'[Retention Premium ] ),
'ENTERPRISE VIEW'[EffectiveDate] = YEAR ( NOW () )
),
0
)
)
我想做的是,如果公司名称是 1 或 0,则将各种指标相加,然后根据当前年份进行过滤。
作为参考,我使用的是 Power BI,并且我创建了一个在此逻辑下工作的列:
VAR _A = 'ENTERPRISE VIEW'[RPC]
+ 'ENTERPRISE VIEW'[New Business]
+ 'ENTERPRISE VIEW'[Retention_Premium]
+ 'ENTERPRISE VIEW'[CurrentTermPremium]
- 'ENTERPRISE VIEW'[Retention_Premium]
VAR _B = 'ENTERPRISE VIEW'[RPC]
+ 'ENTERPRISE VIEW'[New Business]
+ 'ENTERPRISE VIEW'[Retention_Premium]
RETURN
IF (
'ENTERPRISE VIEW'[EffectiveMonth&Year].[Year] = YEAR ( NOW () )
&& 'ENTERPRISE VIEW'[Total Prod Segment Check] = "1",
_A,
IF (
'ENTERPRISE VIEW'[EffectiveMonth&Year].[Year] = YEAR ( NOW () )
&& 'ENTERPRISE VIEW'[Total Prod Segment Check] = "0",
_B,
0
)
)
但我试图在该列中采用相同的逻辑并将其应用于度量。我只是不确定为什么会出现此错误。
感谢您的帮助!
@smpa 是正确的。 FILTER ( 'ENTERPRISE VIEW', [Total Prod Segment Check] = "1" )
是一个包含多个列的完整 table,说 if <Table> then ....
没有意义
如果你希望你的度量值等同于计算列的总和,那么我认为你可以这样写:
CALCULATE (
SUM ( 'ENTERPRISE VIEW'[RPC] )
+ SUM ( 'ENTERPRISE VIEW'[New Business] )
+ SUM ( 'ENTERPRISE VIEW'[CurrentTermPremium] ),
'ENTERPRISE VIEW'[EffectiveDate] = YEAR ( NOW () ),
'ENTERPRISE VIEW'[Total Prod Segment Check] = "1"
) +
CALCULATE (
SUM ( 'ENTERPRISE VIEW'[RPC] )
+ SUM ( 'ENTERPRISE VIEW'[New Business] )
+ SUM ( 'ENTERPRISE VIEW'[Retention Premium ] ),
'ENTERPRISE VIEW'[EffectiveDate] = YEAR ( NOW () ),
'ENTERPRISE VIEW'[Total Prod Segment Check] = "0"
)
(请注意,[Retention Premium ]
在第一个 CALCULATE 中自行抵消。)
感谢@Alexis,
这需要对 CALCULATE
的年份过滤器部分进行小的修改。
CALCULATE(
SUM('ENTERPRISE VIEW'[RPC]) + SUM('ENTERPRISE VIEW'[New Business]) + SUM('ENTERPRISE VIEW'[Retention Premium ]) + (SUM('ENTERPRISE VIEW'[CurrentTermPremium]) - SUM('ENTERPRISE VIEW'[Retention Premium ]))
,'ENTERPRISE VIEW'[Total Prod Segment Check] = "1"
,YEAR('ENTERPRISE VIEW'[EffectiveDate]) = YEAR(NOW())
)
+
CALCULATE(
SUM('ENTERPRISE VIEW'[RPC]) + SUM('ENTERPRISE VIEW'[New Business]) + SUM('ENTERPRISE VIEW'[Retention Premium ])
,'ENTERPRISE VIEW'[Total Prod Segment Check] = "0"
,YEAR('ENTERPRISE VIEW'[EffectiveDate]) = YEAR(NOW())
)
我看过其他主题,但我似乎无法将我的情况应用于它们。
我正在执行 CALCULATE 语句并收到有关多列的错误。虽然这似乎是一个简单的错误,但我已尝试删除多列的所有实例,但错误仍然存在。这是我的代码:
IF (
FILTER ( 'ENTERPRISE VIEW', [Total Prod Segment Check] = "1" ),
CALCULATE (
SUM ( 'ENTERPRISE VIEW'[RPC] )
+ SUM ( 'ENTERPRISE VIEW'[New Business] )
+ SUM ( 'ENTERPRISE VIEW'[Retention Premium ] )
+ SUM ( 'ENTERPRISE VIEW'[CurrentTermPremium] )
- SUM ( 'ENTERPRISE VIEW'[Retention Premium ] ),
'ENTERPRISE VIEW'[EffectiveDate] = YEAR ( NOW () )
),
IF (
FILTER ( 'ENTERPRISE VIEW', 'ENTERPRISE VIEW'[EffectiveMonth&Year].[Year] )
= YEAR ( NOW () )
&& FILTER ( 'ENTERPRISE VIEW', [Total Prod Segment Check] = "0" ),
CALCULATE (
SUM ( 'ENTERPRISE VIEW'[RPC] )
+ SUM ( 'ENTERPRISE VIEW'[New Business] )
+ SUM ( 'ENTERPRISE VIEW'[Retention Premium ] ),
'ENTERPRISE VIEW'[EffectiveDate] = YEAR ( NOW () )
),
0
)
)
我想做的是,如果公司名称是 1 或 0,则将各种指标相加,然后根据当前年份进行过滤。
作为参考,我使用的是 Power BI,并且我创建了一个在此逻辑下工作的列:
VAR _A = 'ENTERPRISE VIEW'[RPC]
+ 'ENTERPRISE VIEW'[New Business]
+ 'ENTERPRISE VIEW'[Retention_Premium]
+ 'ENTERPRISE VIEW'[CurrentTermPremium]
- 'ENTERPRISE VIEW'[Retention_Premium]
VAR _B = 'ENTERPRISE VIEW'[RPC]
+ 'ENTERPRISE VIEW'[New Business]
+ 'ENTERPRISE VIEW'[Retention_Premium]
RETURN
IF (
'ENTERPRISE VIEW'[EffectiveMonth&Year].[Year] = YEAR ( NOW () )
&& 'ENTERPRISE VIEW'[Total Prod Segment Check] = "1",
_A,
IF (
'ENTERPRISE VIEW'[EffectiveMonth&Year].[Year] = YEAR ( NOW () )
&& 'ENTERPRISE VIEW'[Total Prod Segment Check] = "0",
_B,
0
)
)
但我试图在该列中采用相同的逻辑并将其应用于度量。我只是不确定为什么会出现此错误。
感谢您的帮助!
@smpa 是正确的。 FILTER ( 'ENTERPRISE VIEW', [Total Prod Segment Check] = "1" )
是一个包含多个列的完整 table,说 if <Table> then ....
如果你希望你的度量值等同于计算列的总和,那么我认为你可以这样写:
CALCULATE (
SUM ( 'ENTERPRISE VIEW'[RPC] )
+ SUM ( 'ENTERPRISE VIEW'[New Business] )
+ SUM ( 'ENTERPRISE VIEW'[CurrentTermPremium] ),
'ENTERPRISE VIEW'[EffectiveDate] = YEAR ( NOW () ),
'ENTERPRISE VIEW'[Total Prod Segment Check] = "1"
) +
CALCULATE (
SUM ( 'ENTERPRISE VIEW'[RPC] )
+ SUM ( 'ENTERPRISE VIEW'[New Business] )
+ SUM ( 'ENTERPRISE VIEW'[Retention Premium ] ),
'ENTERPRISE VIEW'[EffectiveDate] = YEAR ( NOW () ),
'ENTERPRISE VIEW'[Total Prod Segment Check] = "0"
)
(请注意,[Retention Premium ]
在第一个 CALCULATE 中自行抵消。)
感谢@Alexis,
这需要对 CALCULATE
的年份过滤器部分进行小的修改。
CALCULATE(
SUM('ENTERPRISE VIEW'[RPC]) + SUM('ENTERPRISE VIEW'[New Business]) + SUM('ENTERPRISE VIEW'[Retention Premium ]) + (SUM('ENTERPRISE VIEW'[CurrentTermPremium]) - SUM('ENTERPRISE VIEW'[Retention Premium ]))
,'ENTERPRISE VIEW'[Total Prod Segment Check] = "1"
,YEAR('ENTERPRISE VIEW'[EffectiveDate]) = YEAR(NOW())
)
+
CALCULATE(
SUM('ENTERPRISE VIEW'[RPC]) + SUM('ENTERPRISE VIEW'[New Business]) + SUM('ENTERPRISE VIEW'[Retention Premium ])
,'ENTERPRISE VIEW'[Total Prod Segment Check] = "0"
,YEAR('ENTERPRISE VIEW'[EffectiveDate]) = YEAR(NOW())
)