计算过滤成本

时间:2018-11-20 09:01:17

标签: ssas powerbi dax ssas-tabular

(为清楚起见而编辑) 我不熟悉DAX和表格格式,但是遇到了问题

我们有一个包含多个事实表的表格模型,共享一些维度。

现在,我们面临的挑战是,一个事实的成本应该基于另一张表上的成本,使用顺序关系来计算。

想法是DBM成本是正确的,但是Adform中的成本可能来自其他渠道,在这种情况下,我们应该使用Adform中的成本。

因此,我们需要检查是否存在与订单相关的关联DBM成本。

我们有:

广告事实

Adform ID, Order Id, Impressions, Cost
1 , 1 , 100 , 50
2 , 2 , 200 , 68
3 , 2 , 200 , 100
4 , 3 , 200 , 100
5 , -1 , 600 , 300

DBM事实

DBM ID, Order Id, Impressions, Cost
1 , 1 , 50 , 25
2 , 1 , 20 , 10
3 , 1 , 10 , 10
4 , 2 , 60 , 100
5 , 2 , 80 , 75
6 , -1 , 500 , 1000

和订单维度

Order Id, Order Name
1 , "Campaign 1"
2 , "Campaign 2"
3 , "Campaign 3"
-1 , "Unknown Order"

现在我们需要执行以下操作。

必须从广告费用中获取费用,除非同一订单在DBM表中具有相关费用。在这种情况下,应将成本计算为DBM在共同维度上过滤后的总成本。

我已经尝试过了:

CALCULATE(if(and(COUNTROWS('AdForm')>0,[Cost (DBM)]>0) ,[Cost (DBM)],[Cost (AdForm)]))

当我向下钻取订单时,这可以按预期工作。但是,它仅在汇总级别上执行此操作,因此,当我向下钻取其他常见维度(例如“日期”或“客户”)时,我只是将DBM成本之和作为成本。

我想获得的是所有有DBM成本的订单的DBM成本总和,以及所有其他订单的Adform成本。

1 个答案:

答案 0 :(得分:1)

紧点可能不舒服,但请记住,钻石仅在极高的压力下制成...

我首先要添加度量:

Adform Cost = SUM ( 'Adform Fact'[Cost] ) 

DBM Cost = SUM ( 'DBM Fact'[Cost] ) 

然后,我将使用SUMX在Orders表中逐行运行类似(但简化)的计算:

Order Cost =
SUMX (
    'Order dimension',
    IF ( ISBLANK ( [DBM Cost] ), [Adform Cost], [DBM Cost] )
)