假设为了这个答案,我们使用以下结构:
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
)
由您决定哪个更易于维护、性能最佳或无法在报表生成器中工作。