我有一个事实表,其中包含用于客户交易的列OriginalPrice
和PaidPrice
。我想知道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
关于如何实现这一目标或我做错了什么的建议? 谢谢!
答案 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之间的折扣过滤行。