0

我正在研究如何将以下水晶报表公式中的报表转换为 powerbi 报表生成器。我正在 IIF 程序或 SWITCH 中尝试表达

if not isnull({A}) then 

    if {?Q} = 0 then
        (if {B} = 1  then
            {D} / {C}
        else 
        if {B} = 2 and {C} <> 0 then
            {D} * {C}
        else 0)

    else

        (if {B} = 1  then
            {?Q} / {C}
        else 
        if {B} = 2 and {C} <> 0 then
            {?Q} * {C}
        else 0) 

else 0
4

1 回答 1

0

假设为了这个答案,我们使用以下结构:

MyTable

|-----|------|------|------|
|ColA | ColB | ColC | ColD |
|-----|------|------|------|
|1    | 2    | 3    | 4    |
|-----|------|------|------|

QParam

用于乘法或除法的数值。

为了使我的版本相对简单,我将简单地进行列计算,因为它看起来是特定于行的。

CalcCol = 
   IF( 
    NOT(ISBLANK('Table'[ColA])),  
    IF( SUM(QParam[QParam]) = 0, 
       IF( 'Table'[ColB] = 1, 
            'Table'[ColD] / 'Table'[ColC], 
            IF( AND('Table'[ColB] = 2, 'Table'[ColC] <> 0),
                'Table'[ColD] * 'Table'[ColC], 
                0)),
        IF( 'Table'[ColB] = 1, 
            SUM(QParam[QParam]) / 'Table'[ColC], 
            IF( AND('Table'[ColB] = 2, 'Table'[ColC] <> 0), 
               SUM(QParam[QParam]) * 'Table'[ColC],
            0))
    ), 
    0)

这是 PowerBI Desktop 中的一个有效公式 - 但无法为 PowreBI Report Builder 确认相同的公式。

使用 switch 函数的版本将类似于:

SwitchCol = 
    SWITCH (
    TRUE,
    ( NOT(ISBLANK('Table'[ColA])) &&
    SUM(QParam[QParam]) = 0 && 
    'Table'[ColB] = 1 ) , 'Table'[ColD] / 'Table'[ColC],
    ( NOT(ISBLANK('Table'[ColA])) &&
    SUM(QParam[QParam]) = 0 && 
    'Table'[ColB] = 2 &&
    'Table'[ColC] <> 0 ) , 'Table'[ColD] * 'Table'[ColC],        
    ( NOT(ISBLANK('Table'[ColA])) &&
    SUM(QParam[QParam]) <> 0 && 
    'Table'[ColB] = 1 ) , SUM(QParam[QParam]) / 'Table'[ColC],        
    ( NOT(ISBLANK('Table'[ColA])) &&
    SUM(QParam[QParam]) <> 0 && 
    'Table'[ColB] = 2 &&
    'Table'[ColC] <> 0 ) , SUM(QParam[QParam]) * 'Table'[ColC],
    0
)

由您决定哪个更易于维护、性能最佳或无法在报表生成器中工作。

于 2021-10-20T03:40:16.170 回答