底层数据抽取到有数当中数据翻倍,如何排查?

造成数据翻倍有以下两种情况:

1、业务逻辑引起的数据翻倍:

如果有数的数据模型中,表与表之间存在一对多的情况,那么就会出现数据翻倍的现象。如:人员信息表左关联了一张部门信息表,关联字段为”姓名”。如果部门信息表中存在重复的姓名,就会出现一对多的情况。如何排查这个问题呢?

只需要对表的关联字段,进行统计,一般采用:select “关联字段”,count(1) from 表名 group by “关联字段” having count(1)>1 方式进行验证。如果出现了大于1的结果。那就需要检查以下业务的逻辑问题了。

2、MPP数据类型引起的数据翻倍:

如果有数的MPP是CK集群,也会出现数据翻倍的现象。原因是模型中表之间的关联是存在右关联逻辑。具体可以参考这篇文档:https://fuxkdb.com/2020/08/28/2020-08-28-ClickHouse%E6%9F%A5%E8%AF%A2%E5%88%86%E5%B8%83%E5%BC%8F%E8%A1%A8LEFT-JOIN%E6%94%B9RIGHT-JOIN%E7%9A%84%E5%A4%A7%E5%9D%91/

如何解决这个问题? 把原来右关联的表改成左关联。