【发布时间】:2021-07-04 11:01:37
【问题描述】:
table_1 有 35 列,table_2 有 20 列
查询是:
select table1.*,
table2.f1,
...
table2.f20
FROM public.table_1 as table1
left join public.table_2 as table2
on table1.id = table2.id
and table1.arrival_time::date <= table2.end_date::date
and table2.activity_date < table2.end_date
;
这可行,我希望返回 469 行,这就是我得到的。但是 table_1 中的几个字段显示为 null 而不是表中的值。
这些字段不是连接的一部分。
由于 IP 问题,我无法提供表格的完整详细信息,table_1 和 table_2 中的每个字段都是 varchar(不要问我为什么时间戳存储为 varchar - 这是一个很长的故事,我没有控制)
此查询在 RDS PostgreSQL 中有效!
任何想法为什么它在红移中有问题?
【问题讨论】:
-
因为
table1出现在连接的最左侧,连接本身不可能导致NULL值出现在来自table1的任何列中。这里发生了其他事情。 -
您需要检查表 1 在 Redshift 问题中的列中没有 NULL。我预计将数据从 RDS(或任何来源)移动到 Redshift 时会出现数据加载问题。
-
Bill: select * from table_1 显示字段中的值!蒂姆:我知道 - 对,我希望其他人以前见过红移的怪异现象并能想出一个解决方案。