2010-03-21 61 views
5

我想在SSIS/SSAS中填充星型模式/多维数据集。从事务平面数据库填充事实和维度表的最佳实践

我准备我的所有维度表和我的事实表,主键等

源是一个“平”(物品等级)表,现在我的问题是如何达到分裂它 和得到它一个放入相应的表格中。

我做了一些相当多的搜索,但找不到令人满意的解决方案。人们会想象这是BI开发中相当常见的问题/情况?!

感谢, alexl

回答

9

一开始,它取决于你是否想要做一个简单的初始数据传输或者一些更复杂(例如增量)。我会假设你正在进行初始数据传输。

说你的项目表中的列如下:id, cat1, cat2, cat3, cat4, ...假设类别有1-4列id, cat_name,您可以加载dim_cat1(项目类别1的尺寸表)如下:

insert into dim_cat1 (cat_name) 
    select distinct cat1 from item_table; 

你可以做所有其他类别/维度表都相同。我假设你的维度表已经自动生成了ID。现在,加载事实表:如果你有数据的大量

insert into fact_table (id, cat1_id, cat2_id, cat3_id, cat4_id, ...) 
    select id, dc1.id 
    from item_table it 
     join dim_cat1 dc1 on dc1.cat_name = it.cat1 
     join dim_cat2 dc2 on dc2.cat_name = it.cat2 
     join dim_cat3 dc3 on dc3.cat_name = it.cat3 
     join dim_cat4 dc3 on dc4.cat_name = it.cat4 
... 

,它可能是有意义的创建在item_table类别名称,也许是维表的索引。

顺便说一下,这是一个与数据库无关的答案,我不使用SSIS/SSAS:你可能有可用的工具来简化这个过程的一部分,但是写入内容真的不是那么困难/耗时普通的SQL。

3

我们通过使用数据流任务将自上一个包执行时间以来的信息复制到临时登台表中,然后使用基于密钥的登台表中的数据更新存档/仓库,然后插入那些行还没有存在。截断准备下一次登台表,添加审计负​​载。任务完成?

0

我经常针对操作型数据存储而不是星型模式构建多维数据集。对于星型模式,性能几乎总是会更好,但对于原型/测试,不要害怕针对您没有的数据开发多维数据集你想要的星型模式。