我已经阅读了很多关于star-schema的内容,关于fact / deminsion表,select语句来快速报告数据,但是数据输入星型模式的问题对我来说似乎很冷淡。一个“理论上”如何将数据输入星型模式数据库?同时保持事实表。是巨型存储过程中的一系列INSERT INTO语句,有20个参数是我唯一的选择(以及如何填充事实表)。 非常感谢。
答案 0 :(得分:6)
首先从尺寸开始 - 逐个展开。使用ECCD(Extract,Clean,Conform,Deliver)方法。
确保每个维度都有一个BusinessKey,用于唯一标识维度行描述的“对象” - 例如某人的电子邮件。
加载尺寸后,准备按键查找管道。通常,对于每个维度表,您可以准备密钥查找表(BusinessKey,PrimaryKey)。一些设计人员选择直接查找维度表,但密钥查找通常可以很容易地缓存到内存中,从而加快事实加载。
也可以将ECCD用于事实数据。 ECC部分发生在暂存区域,您可以根据需要为ECC的每个步骤选择(辅助)表或平面文件。
在提供事实表时,将事实行中的每个BusinessKey替换为您从密钥查找表中获得的匹配的PrimaryKey。将所有BusinessKeys替换为匹配的PrimaryKeys后,将该行插入事实表。
不要浪费你的时间,使用ETL工具。你可以免费下载Pentaho Kettle(社区版) - 它拥有实现这一目标所需的一切。
答案 1 :(得分:3)
您通常不以与普通表单相同的方式将数据插入星型模式 - 即使用在单个事务中插入/更新所有适当表的存储过程。请记住,星型模式通常是只读的非规范化数据模型 - 它(很少)以事务方式处理,并且通常从已经非规范化的数据加载 - 通常每个星形一个平面文件。
正如Damir指出的那样,通常,您加载所有维度(处理缓慢变化的等),然后加载事实,加入适当的当前维度以查找维度ID(使用业务键)。