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