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过滤呢?