就在昨天,我的一个会员问我,像这样一个具有历史时效性的表,怎么去跟事实表做合并,然后展开更进一步的数据分析呢?其实她指的就是数据仓库设计中常常用到的“拉链表”。如下图:
熟悉FineBI的小伙伴们都知道,通常在FineBI中,合并两个表的数据一般是用数据集中的:其他表添加列和左右合并(或上下合并),本例因为是需要将拉链表中的维度字段合并到事实表中,所以排除上下合并。
那本例中能用其他表添加列吗?我们看下图就知道,显然其他表添加列也不能满足要求,因为它没有地方可以设置时间范围的合并条件,只能一对一的选择关联条件,并且添加进来的字段要么被聚合(数值),要么被拼接(文本),要么被求最早时间或最晚时间(时间):
那似乎只能选择用左右合并了,让我们再尝试用左右合并处理一下,两个表左右合并后,页面有提示:“两张表的合并依据存在重复值,数据发生膨胀并有可能导致数据错误,建议合并依据去重”,而且左下角的数据量也增加了,原事实表数据量是193条,合并后数据膨胀到293条。
有些小伙伴到这一步,就不敢往下操作了,认为肯定是操作不当,出错了。其实只要你处理逻辑清楚无漏洞,问题可以得到解决,数据集体量不是由中间步骤的数据多少决定,而是由最终的结果决定的。接着看我往下操作:
通过上面的步骤,我们又把数据变回了原来的193条。因为我们通过上面的过滤条件,把不满足条件的记录统统过滤掉了。这就是我要的数据合并的最终处理逻辑。
接下来就是数据验证,上面一顿操作后,不验证数据的正确性是不行的。你怎么知道你的操作有没有失误呢?验证是必须要有的。
通过下图验证,不难发现,产品A002和产品A004在不同时间段内匹配的销售部门和维度表中定义的时间范围完全吻合,且销售事实表记录数正常没有重复。
到这一步,我们就可以正常的用维度表中的其他维度字段进行下一步的数据分析和可视化了,不用担心数据有什么问题。
怎么样?是不是很简单?关注我,我将分享更多精彩数据分析和数据处理案例。
|