Database design SSAS多维数据集时间跨度/周期维的实现方法

Database design SSAS多维数据集时间跨度/周期维的实现方法,database-design,time,ssas,business-intelligence,timespan,Database Design,Time,Ssas,Business Intelligence,Timespan,我们有一个庞大的流量数据库(通话数据记录)。由于记录数量和硬件限制,我们无法使用源详细信息记录进行报告。因此,我们每隔15分钟汇总一次关系数据库中的记录,然后立即截断源数据。这些汇总记录(一段时间内的事件)存储在仓库中,然后用于事实表(MOLAP)。时间跨度/时段存储在SYS_Time_SLICES维度表中,简化版本为: CREATE TABLE [dbo].[SYS_TIME_SLICES] ( [ID] [int] IDENTITY(1, 1) NOT NULL, [DATETIME

我们有一个庞大的流量数据库(通话数据记录)。由于记录数量和硬件限制,我们无法使用源详细信息记录进行报告。因此,我们每隔15分钟汇总一次关系数据库中的记录,然后立即截断源数据。这些汇总记录(一段时间内的事件)存储在仓库中,然后用于事实表(MOLAP)。时间跨度/时段存储在SYS_Time_SLICES维度表中,简化版本为:

CREATE TABLE [dbo].[SYS_TIME_SLICES] (
  [ID] [int] IDENTITY(1, 1) NOT NULL,
  [DATETIME_START] [datetime] NOT NULL,
  [DATETIME_END] [datetime] NOT NULL
) ON [PRIMARY]
第一个记录是:

DATETIME_START      DATETIME_END
01-Jan-13 00:00:00  01-Jan-13 00:15:00
01-Jan-13 00:15:00  01-Jan-13 00:30:00
现在我们正在把它放到多维数据集中,我不知道如何按照最佳实践来做。我看过《一步一步》的书,一些关于时间维度和相关BI的网络教程,仍然没有任何线索。将时间标注为时间会产生一些奇怪的结果。将DATETIME_END标记为DateEnded类型会产生更奇怪的结果

我对SSAS比较陌生,但有15年处理SQL和客户报告的经验,因此我确实了解我想要什么,以及如何在常规SQL中执行

我们必须提供小时、日、周和月粒度的报告。只需手动修改和配置TIME_SLICES维度的属性,就可以轻松做到这一点,其中涉及到一些层次结构(没有任何SSAS特殊魔力)。但我希望拥有所有的时间商业智能(日复一日的增长等等)

更重要的是,旧数据(6个月以上)从未更新,其源仓库表正在存档。在多维数据集中,我们只需要具有按天详细级别的旧数据,从而节省服务器上的空间。这在某种程度上是通过分区实现的——但我不确定具体的时间

鉴于上述考虑因素,是否有针对该时间跨度/周期维度的推荐/通用方法?有什么提示吗?有这方面的书吗?我们应该改变仓库逻辑吗


这是有关的,但有一点不同的问题。我们正在使用2008r2,但可以根据需要升级到2012。

在大多数情况下,最好使用两个单独的维度来表示日期和时间。在你的情况下,时间只有96(24*4)个成员。这些时间可以聚合为小时数,并根据报告/用户需要,聚合为其他时间范围,如班次名称。我会使用一个整数键,可能是一个“说话键”,比如1415,用于从下午2:15到下午2:30的时间跨度(即开始的时间*100+分钟)。这将使从
DATETIME\u START
列计算事实表中的外键变得容易。但您也可以为每个记录分配无意义的整数代理键

日期维度将包含天数作为粒度,并且可以具有诸如星期几假期是/否、月、年、季度等属性。。。这在很大程度上取决于报道的必要性。在这里准备更多的属性比准备更少的属性更好,因为这使报告更容易。而且维度表的记录很少,因此不需要对属性的数量限制太多。您可以对该表的整数主键使用类似的结构,例如。G2013年10月9日的20131009。但同样,只需一个任意整数代理键也可以