Ssas SSA获取两个日期之间的活动记录计数

Ssas SSA获取两个日期之间的活动记录计数,ssas,mdx,data-warehouse,olap-cube,Ssas,Mdx,Data Warehouse,Olap Cube,根据以下要求,您能告诉我设计数据仓库和尺寸建模(SSAS cube)的最佳方法吗。 这里的要求是,如果用户从图像中显示的下拉列表中选择年份(2015年),我必须获得截至该月的有效学生人数。这里没有选择enrollstartdate和enrollenddate作为两个不同日期(没有角色扮演维度)的选项,只有一个过滤器,即年份 我想到了几种可能的方法。第一个是a,另一个是a 在我看来,第一个更容易实现,所以我在下面提供了一些细节,希望您会觉得有用 CREATE TABLE FactEnrollmen

根据以下要求,您能告诉我设计数据仓库和尺寸建模(SSAS cube)的最佳方法吗。 这里的要求是,如果用户从图像中显示的下拉列表中选择年份(2015年),我必须获得截至该月的有效学生人数。这里没有选择enrollstartdate和enrollenddate作为两个不同日期(没有角色扮演维度)的选项,只有一个过滤器,即年份


我想到了几种可能的方法。第一个是a,另一个是a

在我看来,第一个更容易实现,所以我在下面提供了一些细节,希望您会觉得有用

CREATE TABLE FactEnrollmentSnapshot
(
    DateKey INT NOT NULL -- Reference to Date dimension table
    , StudentKey INT NOT NULL -- Reference to Student dimension table
);

CREATE TABLE DimStudent
(
    StudentKey INT NOT NULL
    StudentId ?
    ...Other Student Attributes...
);

CREATE TABLE DimDate
(
    DateKey INT NOT NULL
    , FullDate DATETIME NOT NULL
    , Year SMALLINT
);
假设日期维度为日粒度,则可以存储每日快照,也可以只存储每月15日的快照

根据您是否需要获得2015年的唯一学生计数或2015年的最新学生计数,您可以使用SSAS中的
独立计数
聚合或
LastChild
聚合。如果使用
LastChild
,请确保将
Date
维度标记为时间类型

请注意,快照样式的事实表会产生半相加的事实

通过使用源数据和
Date
维度之间的交叉联接,可以从示例源数据获取原始数据以填充事实表

SELECT
    StudentTable.StudentID
    , DimDate.FullDate
FROM
    StudentTable
    INNER JOIN DimDate ON (DimDate.FullDate BETWEEN StudentTable.EnrollDate AND ISNULL(StudentTable.DisenrollDate,'9999-12-31'));
为了简单起见,我没有包括对代理键的查找

然后,您可以通过日期维度中的
Year
属性为您的业务用户获取答案

我希望这有助于你开始一种可能的方法

问候,, 杰西戴森