ale*_*x25 5 database ssas ssis etl business-intelligence
我想在SSIS/SSAS中填充星型模式/多维数据集.
我准备了所有维度表和事实表,主键等.
源是一个'平面'(项目级别)表,我现在的问题是如何将其拆分并从一个表中获取到相应的表中.
我做了一些谷歌搜索,但找不到令人满意的问题解决方案.可以想象这是BI开发中一个相当常见的问题/情况?!
谢谢,亚历克斯
首先,它取决于您是要进行简单的初始数据传输还是更复杂的(例如增量式).我假设您正在进行初始数据传输.
假设您的项目表具有如下列: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;
Run Code Online (Sandbox Code Playgroud)
您可以对所有其他类别/维度表执行相同的操作.我假设你的维度表有自动生成的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
...
Run Code Online (Sandbox Code Playgroud)
如果您有大量数据,则可以在item_table和维度表中的类别名称上创建索引.
顺便说一下,这是一个独立于数据库的答案,我不使用SSIS/SSAS:你可能有可用的工具可以简化这个过程的一部分,但是用纯SQL编写它并不困难/耗时.
| 归档时间: |
|
| 查看次数: |
7656 次 |
| 最近记录: |