在SSAS多维数据集中,如何为非时间维度创建聚合为LastChild的度量?
源数据在任何指定日期都有许多同一商业记录的版本。时间维度具有DATE的粒度,而不是秒和&毫秒。
事实记录具有时间戳和增量(标识)主键。实际上,我想要的是将度量计算为给定日期所有编辑的最后一个值。
到目前为止,我看到的选项分为两类:
OR
是否有解决这个问题的最佳点或替代技术?
数据的自然层次结构是:
答案 0 :(得分:5)
不,你绝对不能创建没有时间维度的latChild属性:
您可以在DSV上创建一个查询,为您提供最后一个子值,并使用它来创建一个度量值组。例如:
脚本:
create table dim(
id int not null primary key,
name varchar(50))
insert into dim values (1,'one'),(2,'two')
create table fact(
id int not null primary key,
dimId int not null,
value numeric (12,3),
constraint fk_fact_dim foreign key(dimId) references dim(id))
insert into fact values (1,1,5)
insert into fact values (2,1,3)
insert into fact values (3,2,10)
insert into fact values (4,2,20)
非常简单的脚本,可以创建一个dim和一个事实表。这是一个简单的选择,在我认为你想要的结果之后,所以3和20将是基于Dimension ID的最后一个值:
构建非常简单,只需右键单击您的DSV并添加新的命名查询并通知查询创建您的最后一个值。在我的情况下是:
select dimId,
(select top 1 value from fact where dimId=F.dimId order by id desc) as lastValue
from fact F
group by dimId
创建逻辑主键并将其链接到维度表:
在您的多维数据集上,右键单击任何空白区域,选择“显示所有表格”并添加新表格。
在您的多维数据集上创建一个新度量为“无聚合”,因为您已经汇总了查询:
结果: