我们有一个包含四个维度表和一个事实表的数据仓库设计:
- dimUser id、电子邮件、名字、姓氏
- dimAddress id, 城市
- dimLanguage id,语言
- dimDate id、startDate、endDate
- factStatistic id、dimUserId、dimAddressId、dimLanguageId、dimDate、loginCount、pageCalledCount
我们的问题是:我们要构建包括计算统计信息(取决于 userId、日期范围)和填充外键的事实表。
但是我们不知道如何,因为我们不了解如何使用自然键(根据我们阅读的文献,这似乎是我们问题的解决方案)。
我相信一个自然键是 userId,它在所有计算维度数据的 ETL 作业中都是必需的。
但是有很多困难:
- 在 ETL 作业 load() 中,我们使用 INSERT IGNORE INTO 进行批量插入以删除重复项 => 我们不知道生成的代理键
- 如果我们创建元数据(包括一组维度名称、代理键、自然键),由于重复消除,这将不起作用
问题似乎是重复消除策略。有更好的方法吗?
我们使用的是 MySQL 5.1,如果它有什么不同的话。