我想在SSIS / SSAS中填充星型架构/多维数据集。
我准备了所有维度表和事实表,主键等。
源是一个'平面'(项目级别)表,现在我的问题是如何拆分它 起来,从一个进入各自的表。
我做了一些谷歌搜索,但找不到令人满意的问题解决方案。可以想象,这是BI开发中一个相当常见的问题/情况?!
谢谢, alexl
答案 0 :(得分: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。
答案 1 :(得分:3)
我们这样做是通过使用数据流任务将自上次包执行时间以来的信息复制到临时登台表中,然后根据密钥更新存档/仓库中包含来自这些登台表的数据,然后插入那些不包含的行。还存在。截断下一次准备好的临时表,添加一个审计负载。工作完成了吗?
答案 2 :(得分:0)
我经常使用操作数据存储而不是星型模式构建多维数据集。使用星型模式,性能几乎总是更好,但对于原型设计/测试,不要害怕根据您不是明星的数据开发多维数据集你想要的架构。