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
字段的值。