仓库增量负荷;更新维度表

时间:2010-12-10 15:15:24

标签: mysql data-warehouse

我正在试图弄清楚当数据进入我们的系统时如何逐步加载我的事实和维度表。

有没有比以下更简单的方法:

  • dim_id =从dim_table中选择id,其中dim_table.value ='dim value';
  • 如果rowcount == 0 - >插入dim_table ......
  • 插入事实(暗淡,测量)值(dim_id,23131)

如果我有10个尺寸,那么装载会变得相当麻烦

2 个答案:

答案 0 :(得分:0)

你真的需要它们来增量吗?你不能使用UUID吗?

我不明白为什么你需要一个dim_table。

如果您正在制作星型模式,那就是如何使其工作

Fact_table
----------
time_id          character(36)
geographic_id    character(36)
measure          whatyouwant

Dim Time
--------
time_id    character(36) (That matches the time_id inside your fact table)
...
...

Dim Geogrphic
-------------
geographic_id character(36) (that matches the geographic_id inside your fact_Table)
....
....

填写尺寸表时,会为尺寸生成uuid。 当您填写事实表时,查找维度表,以便获得与此值相关联的uuid。

编辑:我认为这可能对您有所帮助http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

答案 1 :(得分:0)

在标准星型模式中,尺寸在事实之前加载。 因此,如果有一个批量运行的ETL流程,最简单的解决方案是尝试更频繁地运行批处理。如果你确实需要实时DW加载,事实必须以某种方式延迟,以确保首先加载尺寸。

对于现成的解决方案,您可以查看流事件处理。有几种商业工具,但EsperTech是开源的。系统可以设置为连续运行的ETL转换。想想一个持续运行的Kettle(Talend,SSIS,...)转型。