(为清楚起见而编辑) 我不熟悉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成本。
答案 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] )
)