将关系迁移到多维-如何从时间戳创建时间维度-SSAS

将关系迁移到多维-如何从时间戳创建时间维度-SSAS,ssas,etl,dimensional-modeling,Ssas,Etl,Dimensional Modeling,目标:我有一个关系数据库(RDB)模型。一些表具有属性时间戳。 我想为多维模型创建一个日期维度 查看解决方案3时,我注意到time-Date维度表的属性FullDateAlternateKey与RDB表中的时间戳属性具有相同的格式 问题:因此,我想知道是否有一种方法可以自动生成日期维度表模式(使用FullDateAlternateKey作为主键),并使用RDB表中时间戳的数据填充它 然后,我可以将RDB表中的timestamp属性作为多维模型中时间维度表的外键。步骤1: 选择粒度并基于该粒度生成

目标:我有一个关系数据库(RDB)模型。一些表具有属性时间戳。 我想为多维模型创建一个日期维度

查看解决方案3时,我注意到time-Date维度表的属性FullDateAlternateKey与RDB表中的时间戳属性具有相同的格式

问题:因此,我想知道是否有一种方法可以自动生成日期维度表模式(使用FullDateAlternateKey作为主键),并使用RDB表中时间戳的数据填充它

然后,我可以将RDB表中的timestamp属性作为多维模型中时间维度表的外键。

步骤1: 选择粒度并基于该粒度生成时间维度键。例如,选择粒度小时,需要类似于2001020323(yyyymmddhh)的值

使用SSAS无法自动完成此操作,因此最好使用脚本在底层数据源中构建时间维度表,然后将其导入SSAS中的DSV并使用它构建时间维度。()

步骤2:
我必须匹配时间维度的键,因此我需要一个ETL流程/作业/脚本,将我的时间戳作为输入,并为该时间戳返回一个与时间维度表中的键匹配的键。

不要

首先,确定维度的“粒度”。听起来你想要一个日期维度,所以谷物将是一天

然后,确定要在维度中显示的列。例如周数、周中的日数、年中的日数、日名称、月名称等

接下来,根据需要的日期范围,构建一个电子表格,每个日期包含一行,并计算所需的列

最后,使用您首选的ETL/ELT方法从电子表格中加载并处理维度

不从传入的数据值构建它的原因是数据中可能存在间隙。日期维度应包含所需范围内的所有日期(即1900-01-01至2999-12-31),以便BI工具最终可以将其用于时间序列报告。如果您没有所有的日期,并试图在图形的x轴上显示日期,您将得到错误的可视化效果


使用电子表格作为源的另一个原因是日期维度是设计中最不稳定的维度之一。您的用户将要求新列和列的变体(即,“我们可以有一个日期为2017年8月4日的列吗?”)和电子表格是一种非常快速的方法来管理数据,并在必要时重建维度。

数据库中已有的数据如何?它将如何匹配时间维度?这是我的问题/疑问。我需要显示来自关系数据库的数据,因此我需要一种将这些关系表的timestamp属性转换为date维度的方法,以便显示这些表。或者不知道?我不知道您的加载过程,所以我不能只指出一个解决方案,但一个可行的选择是向事实表中添加一个日期列,并使用日期转换的时间戳填充它。然后,如果您的日期维度以日期为键,则可以将两个表连接起来。仅具有事实中使用的时间戳的维度作为时间/日期维度是没有用的-它需要是日期或时间的连续维度,包括根据Ron的回答未使用的维度。通过在DSV中查询事实的时间戳,您当然可以从事实的时间戳创建维度,但Ron说得对:不可以。我必须匹配时间维度的键,因此我需要在时间戳上使用ETL。当然。但是你的时间维度应该独立于你的事实,然后你匹配它。