在关于动态分区的配置单元文档页面中,有一个多表插入的特定示例:
FROM S
INSERT OVERWRITE TABLE T PARTITION (ds='2010-03-03', hr)
SELECT key, value, ds, hr FROM srcpart WHERE ds is not null and hr>10
INSERT OVERWRITE TABLE R PARTITION (ds='2010-03-03, hr=12)
SELECT key, value, ds, hr from srcpart where ds is not null and hr = 12;
什么是 FROM S
什么事?multi-table insert查询看起来应该在没有它的情况下也能工作,那么我缺少了什么呢?
1条答案
按热度按时间5cnsuln71#
这是多个插入的语法。如果不希望对配置单元对象进行多次传递,则在多个插入覆盖表之前使用from\语句(表、视图、文件、子查询)将导致对from\语句对象进行单次传递。
在上面的例子中,它真的应该是
FROM srcpart
或者应该这样FROM S srcpart
它引用别名为srcpart的配置单元对象,从中创建两个分区t&r。例子
查询1:
问题2:
查询2将生成一个传递表weather,而查询1将生成两个传递来创建相同的2个对象。