0

我们有一个庞大的流量数据库(通话数据记录)。由于记录数量和硬件限制,我们不能使用源详细记录进行报告。因此,我们以 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

现在我们将其放入多维数据集中,我不确定如何根据最佳实践进行操作。我查了“Step-by-Step”一书,一些关于时间维度和相关BI的互联网教程,仍然没有线索。将 TIME_SLICES 维度标记为时间会产生一些奇怪的结果。将 DATETIME_END 标记为 DateEnded 类型会产生更奇怪的结果。

我对 SSAS 比较陌生,但在处理 SQL 和客户报告方面有 15 年的经验,所以我确实了解我想要什么以及如何在常规 SQL 中做到这一点。

我们必须提供具有小时、日、周和月粒度的报告。这可以很容易地通过手动修改和配置 TIME_SLICES 维度的属性来完成,其中涉及一些层次结构(没有任何 SSAS 特殊魔法)。但我想拥有 TIME 商业智能的所有花里胡哨(日复一日的增长等)。

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

鉴于上述考虑因素,是否有针对此 TIME SPAN/PERIOD 维度的推荐/常用方法?有什么提示吗?有没有这方面的书?我们应该改变我们的仓库逻辑吗?

这与SSAS - Facts that occur over a time range有关,但有一点不同的问题。我们使用的是 2008r2,但可以根据需要升级到 2012。

4

1 回答 1

1

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

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

于 2013-10-08T22:18:39.473 回答