SSAS—“分组”等效MDX计算
我的事实表如下所示:SSAS—“分组”等效MDX计算,ssas,mdx,cube,Ssas,Mdx,Cube,我的事实表如下所示: select ticketid, price, statusid, case when rn=1 then 1 else 0 end as IsMaxStatus from (select ticketid,price,statusid, row_number()over (partition by ticketid, price order by statusid desc) as rn from yo
select
ticketid,
price,
statusid,
case when rn=1 then 1 else 0 end as IsMaxStatus
from
(select ticketid,price,statusid,
row_number()over
(partition by ticketid, price order by statusid desc) as rn
from yourFactTb
) as fact
TICKTID价格状态ID
1 100 1
2 100 1
2 100 2
3 150 1
我正在使用SSAS为我的数据仓库创建OLAP多维数据集。
我不能将aggregateFunction“Sum”用于度量“total price”,因为我将得到450美元,而不是350美元,这是正确的tatal
关于您仍然可以在db中添加如下视图:
select
ticketid,
price,
statusid,
case when rn=1 then 1 else 0 end as IsMaxStatus
from
(select ticketid,price,statusid,
row_number()over
(partition by ticketid, price order by statusid desc) as rn
from yourFactTb
) as fact
然后添加维度[IsMaxStatus],其中包含多维数据集中0/1的两条记录,并根据上述事实表将Dim使用设置为常规度量值组,然后添加一个计算度量值,例如使用以下公式的[cal price]:
with member [cal-price] as
([Price],[IsMaxStatus].[IsMaxStatus].&[1])
select [cal-price] on 0
from [YourCube]
您也可以通过此度量值组计算其他度量值,而无需dim[IsMaxStatus]过滤器
希望能有帮助
www.mdx-helper.com您想按ticketID分组吗?嘿!是的,这就是我想要的。每张票有一个价格吗?是的,的确……你为什么不按状态ID 1过滤呢?