从DAX平均总计中删除空白

时间:2019-05-03 10:46:16

标签: powerbi dax

我有一个名为Conditions的表,该表链接到一个名为Agreement的表,关系为AgreementID

Conditions中,我已经在名为Margin Pct-EOPMinimum Pct-EOP的模型中预先计算了两个度量,它们根据过滤器上下文返回值。

我在Power BI中创建了名为InterestRateFloorBoolean的度量,如果这些度量不匹配,则返回true

InterestRateFloorBoolean = if('Conditions'[Margin Pct-EOP] <> 'Conditions'[Minimum Pct-EOP],true,false)

如果该度量返回true,则称为InterestRateFloorAmount的后续度量将运行以下计算(简单的底减法)。

if([InterestRateFloorBoolean] = true,floor([Minimum Pct-EOP] - [Margin Pct-EOP],0.01),BLANK())

在行级别,返回所需的输出,blank()显示边距/最小度量的匹配位置。但是,“总计”平均运行2个AgreementID条目,因为ID 3236确实具有“保证金”和“最小值”值。 ID 3336被排除在外,因为它没有任何条目。

我知道blank()null是不同的,并且出于合计(平均值)的目的,实际上将其视为0。如何构造我的InterestRateFloorAmount度量,以便在对总数求平均值时不包含任何blank()值?

当前输出为例,InterestRateFloorAmount的总计应为4.00%(百分比是一种格式):

enter image description here

1 个答案:

答案 0 :(得分:1)

这是由于计算上下文以及如何计算两个度量[Margin Pct-EOP][Minimum Pct-EOP]

因为在总行的上下文中,计算将忽略前几行的上下文。因此,InterestRateFloorAmount比较了IF-statement中的两个量度:

InterestFloorAmount = 
IF(
    [InterestRateFloorBoolean] = true,
    floor([Minimum Pct-EOP] - [Margin Pct-EOP], 0.01),
    BLANK()
)

但是,在Total的上下文中,这两个量度分别为4.20%2.20%(我假设它们分别像(2.25+6.15)/2(2.25+2.15)/2一样计算)。从而 InterestFloorBoolean的计算结果为TRUE,因此InterestRateFloorAmount的计算结果为4.20%-2.20%,最终得到2.00%