为啥这个 Hive 代码返回 0 个结果?
Posted
技术标签:
【中文标题】为啥这个 Hive 代码返回 0 个结果?【英文标题】:Why is this Hive code returning 0 results?为什么这个 Hive 代码返回 0 个结果? 【发布时间】:2019-11-07 13:29:55 【问题描述】:select *
FROM prd_raw_sf.sf_opportunity_dn A JOIN
prd_raw_sf.sf_opportunity_rw B
ON A.OPPORTUNITYID = B.SFDC_ID LEFT JOIN
prd_raw_sf.sf_si_accounts_mapping C
ON TRIM(UPPER(A.ACCOUNT_NAME)) = TRIM(UPPER(C.sfdc_account_name))
WHERE C.sfdc_account_name IS NULL
and C.Billing_Client in ('CL.00000:')
当我查询到“WHERE C.sfdc_account_name IS NULL”时,它会返回必要的结果。但是,如果我添加最后一行...“and C.Billing_Client in ('CL.00000:')”,它只会返回 0 结果。请帮忙!
【问题讨论】:
为什么?因为JOIN
或WHERE
子句会过滤掉所有结果。
【参考方案1】:
我推测你打算:
SELECT *
FROM prd_raw_sf.sf_opportunity_dn od JOIN
prd_raw_sf.sf_opportunity_rw orw
ON od.OPPORTUNITYID = orw.SFDC_ID LEFT JOIN
prd_raw_sf.sf_si_accounts_mapping am
ON TRIM(UPPER(od.ACCOUNT_NAME)) = TRIM(UPPER(ord.sfdc_account_name)) AND
am.Billing_Client in ('CL.00000:')
WHERE am.sfdc_account_name IS NULL;
帐户名称不可能是NULL
在LEFT JOIN
之后,Billing_Client
不可能是NULL
以外的任何其他。那是因为帐户名被用作JOIN
键,所以NULL
不匹配。 NULL
值表示不匹配,因此表中的所有其他列都是NULL
。
请注意,我还修复了表别名,因此它们是有意义的,而不是任意字母。
【讨论】:
谢谢@Gordon Linoff ...这很有帮助以上是关于为啥这个 Hive 代码返回 0 个结果?的主要内容,如果未能解决你的问题,请参考以下文章
我在 2 个搜索日期之间检索事件的查询没有返回任何结果,为啥?