SSAS的事实表设计

时间:2013-08-23 11:40:30

标签: sql ssas cube fact

我正在为SSAS设计一个事实表,这是我第一次尝试这个,因为这是一个原型系统,只是为了展示可以做什么并向某人展示决定是否他们追求的是什么。

我已经编制了一些数据,现在我正在尝试创建事实表。该多维数据集将查看推荐,我试图显示的是随时间变化的信息,显示一个月内推出的推荐数量,一个月内关闭的数量以及当月任何时间点打开的数量(即它们可能在上个月开放并在未来一个月内关闭。)

如何最好地设计这些措施是我陷入困境的地方。它应该是三个事实表还是我可以逃脱一个?如果我做三个事实表,我可以链接记录号和开放日期以获得在一个月内打开的号码,我可以链接记录号和关闭日期以创建在一个月内关闭的号码,但是我有一个不知道是什么时候在这个月的任何时候开放。对于这个表,我是否需要为每个推荐每天创建一行?这似乎有点密集,所以我认为这是错误的。

所以问题有两个:

  1. 我可以在一张表中执行这三项措施,如果是,那么最佳方法是什么?
  2. 月份计算中任何一点开放的最佳方法是什么?
  3. 任何想法都会受到最高的赞赏,因为我真的是这方面的初学者,所有我必须帮助我的是Google,因为我有一个很短的截止日期。

    我的尺寸:

      

    受众特征:记录编号;性别;种族;出生日期;

         

    推荐:记录号码;开放日期;结束日期;

         

    时间:日期;月; 25美分硬币;年;

    我最初设计的事实表是:

      

    数据:

         

    记录号码; Opened_in_month; Closed_in_month; Open_in_month;

    自创建多维数据集以来,我可以看到这些数字与我在测试数据中放置的数字不匹配,所以我知道我搞乱了事实表,这是我需要重新创建的表。 / p>

2 个答案:

答案 0 :(得分:0)

我在SSAS中创建多维数据集的经验不多,但我可能会像这样创建一个视图

ReferallFacts:

Id | IsOpen | DateOpened | OpenedBy | DateClosed | ClosedBy | OpenForMinutes...

CalendarDimension:

ShortDate | Week | Month | Quarter | Year | FinancialWeek...

EmployeeDimension:

Id | FirstName | LastName | LineManager | Department...

DepartmentDimension:

Id | Name | ParentDepartment | Manager | Location...

在这种情况下,我并不真正看到需要多个事实表,因为您所描述的“按月”,“按天”所描述的内容都由日历维度处理。

Here是一个非常好的演员,而pcteach.me也有一些关于SSAS的好视频。

答案 1 :(得分:0)

您是否考虑过以事件为基础的方法,即转介开始或结束的事件?

首先,您需要确定事实表的粒度级别。如果您需要知道一个月中特定日期和时间的公开推荐人数,那么您的事实表必须是最低的粒度(个别推荐记录):

FactReferrals: ( DateId, TimeId, EventId, RecordNumber, ReferralEventValue )

这里,ReferralEventValue在推荐打开时只是一个整数值,在推荐关闭时只是-1。 EventId是指仅包含两个成员的维度:OpenedClosed

此方法允许您获取任何给定时间段内已关闭或已打开事件的数量。此外,通过从开始时间到某个时间点获取ReferralEventValue的总和,您可以获得该特定时刻的确切开放推荐数量。要在SSAS中加速此总和,您可以设计聚合或创建一个单独的度量,它是ReferralEventValue的累计总和。

编辑:当然,如果您不需要个人推介粒度的数据,您可以在加载事实表之前总结每天甚至月份的ReferralEventValue。