apache-spark - 多个表在 Hive 中加入时出现错误 - 加入时遇到左右别名
问题描述
我正在尝试加入 3 张桌子。以下是表格详情。
我期待以下结果
这是我的查询并收到错误,因为“在加入 'id' 中遇到了左右别名”。这是由于将第 3 个表与第 1 个和第 2 个表连接(最后一个完整的连接语句)。
select coalesce(a.id,b.id,c.id) as id,
ref1,ref2,ref3
from v_cmo_test1 a
FULL JOIN v_cmo_test2 b on (a.id = b.id)
FULL JOIN v_cmo_test3 c on (c.id in (a.id,b.id))
如果我使用下面的查询,id 3 在我不想要的表中重复。
select coalesce(a.id,b.id,c.id) as id,
ref1,ref2,ref3
from v_cmo_test1 a
FULL JOIN v_cmo_test2 b on a.id = b.id
FULL JOIN v_cmo_test3 c on c.id = a.id
任何人都可以帮助我如何达到预期的结果,并非常感谢您的帮助。
谢谢,巴布
解决方案
这是一个非常棘手的要求。数据不正确,因为您使用 test1 作为驱动程序,外部连接不能正常工作。这可能发生在其他表中。所以,我一次加入两张桌子来实现你想要的。
select coalesce(inner_sq.id,c.id) as id,ref1,ref2,ref3
from
(select coalesce(a.id,b.id,c.id) as id,ref1,ref2
from v_cmo_test1 a
FULL JOIN v_cmo_test2 b on a.id = b.id
) inner_sq
FULL JOIN v_cmo_test3 c on c.id = inner_sq.id
inner_sq 查询输出 -
1,bab,kim
2,xxx,yyy
3,,mmm
当您在上面使用 test3 完全加入时,您应该得到输出。
推荐阅读
- javascript - 在 React js 中单击 element1 时如何在 element2 上执行单击?
- python - 将非常大的图像拆分为重叠的框/块/图块/部分,python,OpenCV
- r - 减去数据框(或矩阵)中的列
- python - Pandas 替换列中的值,但 to_replace 参数是一个包含元组的元组
- python-3.x - 如何使用 Windows 在 Python 3.8 上安装 lxml?
- wordpress - 如何在 Google Cloud Platform Cloud Run 上运行 WordPress?
- c++ - 实现sobel算子的问题
- typescript - Typescript - 基于另一个属性的条件属性
- swift - 如何在arch4random swift中排除0
- google-cloud-platform - 无法在 gcloud 的容器化虚拟机上更新容器