使用[field1]-[field2]> x作为过滤器来计算度量

时间:2019-01-14 15:51:50

标签: ssas powerbi dax

我有一个事实表,其中包含用于客户交易的列OriginalPricePaidPrice。我想知道10到20美元之间的折扣OriginalPrice - PaidPrice有多少交易受益。我已经有一个描述客户数量的指标#Customer

这用于使用与SSAS的实时连接的PowerBI报告。在此连接模式下,新列和某些DAX功能不可用。

DiscountTier1 = CALCULATE([#Customer],(FactTable[OriginalPrice]-FactTable[PaidPrice]) >= 10, FactTable[OriginalPrice]-FactTable[PaidPrice]) < 20)

通过这样做,我想知道有10到20美元折扣的客户数量。

当前,我有如下错误: CALCULATE has been used in a True/False expression that is used as a table filter expression. This is not allowed

关于如何实现这一目标或我做错了什么的建议? 谢谢!

2 个答案:

答案 0 :(得分:4)

添加FILTER函数作为CALCULATE的第二个参数,在此您可以过滤事实表以查找满足您条件的记录。我还建议使用AND函数,以提高可读性和长期维护。

DiscountTier1 =
CALCULATE (
    [#Customer],
    FILTER (
        FactTable,
        AND (
            FactTable[OriginalPrice] - FactTable[PaidPrice]
                >= 10,
            FactTable[OriginalPrice] - FactTable[PaidPrice]
                <= 20
        )
    )
)

答案 1 :(得分:2)

您正在搜索这样的量度:

DiscountTier1 = 
COUNTROWS(
    FILTER(
        SUMMARIZE (
        'FactTable';
        'FactTable'[customer_id];
        "DISCOUNT"; 
            CALCULATE(SUM(FactTable[OriginalPrice])) - CALCULATE(SUM(FactTable[PaidPrice]))
         );
     [DISCOUNT] <= 20 && [DISCOUNT] >= 10
    ) 
)

此查询计算所有行的折扣,并以10到20之间的折扣过滤行。