插入星型模式
Posted
技术标签:
【中文标题】插入星型模式【英文标题】:Insert into a star-schema 【发布时间】:2010-03-22 23:58:53 【问题描述】:我已经阅读了很多关于星型模式、事实/分解表、选择语句以快速报告数据的内容,但是将数据输入星型模式的问题对我来说似乎很冷漠。如何“理论上”将数据输入星型数据库?同时维护事实表。是我唯一的选择(以及如何填充事实表)在巨型存储过程中使用 20 个参数的一系列 INSERT INTO 语句。 非常感谢。
【问题讨论】:
【参考方案1】:首先从维度开始——一个接一个。使用 ECCD(提取、清洁、符合、交付)方法。
确保每个维度都有一个唯一标识维度行所描述的“对象”的 BusinessKey,例如一个人的电子邮件。
加载维度后,准备键查找管道。一般来说,对于每个维度表,您可以准备一个键查找表(BusinessKey、PrimaryKey)。一些设计人员选择直接查找维度表,但键查找通常可以轻松缓存到内存中,从而加快事实加载速度。
也将 ECCD 用于事实数据。 ECC 部分发生在暂存区域中,您可以根据自己的喜好为 ECC 的每个步骤选择(帮助)表或平面文件。
在交付事实表时,将事实行中的每个 BusinessKey 替换为您从键查找表中获得的匹配 PrimaryKey。将所有 BusinessKey 替换为其匹配的 PrimaryKey 后,将该行插入事实表中。
不要浪费你的时间,使用 ETL 工具。您可以免费下载 Pentaho Kettle(社区版)——它拥有实现这一目标所需的一切。
【讨论】:
【参考方案2】:您通常不要将数据插入星型模式,就像插入普通形式一样 - 即使用在单个事务中插入/更新所有适当表的存储过程。请记住,星型模式通常是只读的非规范化数据模型 - 它(很少)被事务处理,并且通常从已经非规范化平面的数据中加载 - 通常每个星一个平面文件。
正如 Damir 指出的那样,通常情况下,您加载所有维度(处理缓慢变化等),然后加载事实,加入适当的当前维度以查找维度 ID(使用业务键)。
【讨论】:
以上是关于插入星型模式的主要内容,如果未能解决你的问题,请参考以下文章
SQL Server:在左连接查询的执行计划中插入隐藏的“排序”