我在WebApi服务器上运行SQL server中的Datamart。有一个事实表和多个Dim表。
维度值可以动态增长,因此,当接收到事实数据时,有必要检查Dim表。如果它不存在,那么我需要将维度值添加到Dim表中。
最后,我需要使用Dim表的外键将事实记录插入到事实表中。
我需要为每个事实记录重复该过程。在Datamart系统中添加具有动态维度数据的事实的有效方法是什么?
发布于 2015-04-03 22:01:24
我刚刚回答了一些非常相似的问题(https://stackoverflow.com/a/29433398/3964881),但我意识到这两个问题是不同的,尽管我需要非常相似的答案。
正如我在另一个答案中指出的,通常的模式是首先填充维度,然后填充事实。为了便于讨论,我们假设你有一个人维度和一个城市维度。您应该有一个流程,可以从源系统中提取每个人的所有相关信息,并将任何新信息加载到Person维度中。同样,另一个过程应该从源系统中提取所有的城市信息,并将任何新的信息加载到城市维度中。
一旦完成,您的事实加载就可以运行了,并且可以简单地查找Person和with的代理键/ID值,而不需要检查该值是否存在并在不存在时添加它。如果你的进程工作正常,它们肯定已经存在了。
这是一个合理得多的解决方案,以防您有多个事实表引用相同的维度-否则,您可能最终会遇到这样的情况:您的事实表必须以特定的顺序加载,以确保维度数据正确无误,或者您甚至可能会冒着出现重复维度数据的风险,其中两个事实表加载过程都同时加载了相同的“新”数据。
https://stackoverflow.com/questions/29217709
复制相似问题