在一个博客的hive分区函数主题中,他们在下面的模式中创建了一个表。
CREATE TABLE sales (
sales_order_id BIGINT,
order_amount FLOAT,
order_date STRING,
due_date STRING,
customer_id BIGINT
)
PARTITIONED BY (country STRING, year INT, month INT, day INT) ;
将分区数据插入sales表,如下所示。
INSERT INTO sales
PARTITION (country = 'US', year = 2012, month = 12, day = 22)
SELECT sales_order_id,
order_amount,
due_date,
customer_id,
cntry,
yr,
mo,
d
FROM source_view
WHERE cntry = 'US'
AND yr = 2012
AND mo = 12
AND d = 22 ;
我的怀疑在这里。因为没有像这样的领域 cntry or yr or mo or d
在createtable模式中,如何在insert查询中 cntry or yr or mo or d
. 怎么可能呢?。作者在查询中是否有任何错误,或者是否有可用的选项,如alias。
2条答案
按热度按时间pnwntuvh1#
insert有问题。
q5iwbnjs2#
尽管分区字段没有显式地创建为列,但它们是(伪)列,可以查询。
从hive的文档中:
您创建的分区会生成一个伪列,您可以在其中进行查询
另外(从插入文档中):
可以对表或分区进行插入。如果表已分区,则必须通过为所有分区列指定值来指定表的特定分区。