Hive中的STRUCT类型是一种复杂的数据类型,用于表示具有不同属性的记录
要定义一个STRUCT类型,您需要使用STRUCT
关键字,后跟字段名称和字段类型。字段类型可以是基本数据类型(如INT、STRING、FLOAT等)或另一个STRUCT类型。以下是一个定义STRUCT类型的示例:
CREATE TABLE example_table (
user_info STRUCT<
name STRING,
age INT,
address STRUCT<
street STRING,
city STRING,
state STRING,
zip_code STRING
>
>
);
在这个例子中,我们定义了一个名为example_table
的表,其中包含一个名为user_info
的字段,该字段的类型是STRUCT。user_info
字段包含三个子字段:name
(STRING类型)、age
(INT类型)和address
(另一个STRUCT类型)。address
字段又包含四个子字段:street
、city
、state
和zip_code
。
要向表中插入数据,您可以使用INSERT INTO
语句,并将STRUCT类型的字段用花括号{}
括起来,并用逗号,
分隔每个字段。以下是一个插入数据的示例:
INSERT INTO example_table (user_info)
VALUES (STRUCT(
'John Doe',
30,
STRUCT(
'123 Main St',
'New York',
'NY',
'10001'
)
));
在这个例子中,我们向example_table
表插入了一条记录,其中user_info
字段的值为STRUCT('John Doe', 30, STRUCT('123 Main St', 'New York', 'NY', '10001'))
。
要查询包含STRUCT类型字段的表,您可以使用点符号.
来访问结构体中的字段。以下是一个查询示例:
SELECT user_info.name, user_info.age, user_info.address.street, user_info.address.city
FROM example_table;
这个查询将返回example_table
表中所有记录的name
、age
、address.street
和address.city
字段的值。