单表SELECT查询返回行数高于表实际存在行数问题咨询
更新说明:该问题的根源是将查询结果保存至其他表时出现错误,此问题本应删除。
用户编写的查询语句如下:
SELECT DISTINCT SubscriberKey, 'True' as Email_Opens FROM LN_Journey_21 WHERE SubscriberKey in( SELECT LN.SubscriberKey FROM _Job J join _Open O on J.JobID = O.JobID join LN_Journey_21 LN on LN.SubscriberKey = O.SubscriberKey WHERE J.EmailName LIKE 'IQOS_LN%' and j.CreatedDate >= '2021-05-10' )
异常原因分析
你写的当前查询逻辑本身不可能返回比LN_Journey_21总行数更多的结果,核心依据如下:
SubscriberKey是LN_Journey_21表的主键,自带唯一非重复属性,外层查询直接从该表取数,哪怕不加DISTINCT关键字,返回的SubscriberKey也不可能重复,结果行数最多等于原表总行数- 外层加了
IN子句做过滤,筛选出来的符合条件的行数只会小于等于原表总行数,不存在超出的可能性
你观察到的行数异常,和更新说明描述一致,本质是将查询结果保存到其他表的环节出现了错误,常见的出错场景包括:
- 目标保存表没有设置
SubscriberKey为主键或唯一约束,多次执行查询写入操作时重复追加数据,累计行数超出原表 - 写入配置没有设置覆盖逻辑,每次执行查询都将新结果追加到目标表,多次运行后数据重复累计
- 写入时字段映射配置错误,把其他非唯一字段的值对应到了结果中的
SubscriberKey位置,导致目标表出现大量重复数据
内容的提问来源于stack exchange,提问作者yoni
相关产品推荐
相关产品推荐

