Hive支持復雜數據類型,如STRUCT、ARRAY和MAP
WHERE
子句過濾Struct類型:假設我們有一個名為employee
的表,其中包含一個名為info
的STRUCT類型字段,該字段包含員工的姓名、年齡和部門信息。
CREATE TABLE employee (
id INT,
info STRUCT<name STRING, age INT, department STRING>
);
要過濾出年齡大于30歲的員工,可以使用以下查詢:
SELECT * FROM employee
WHERE info.age > 30;
LATERAL VIEW
和EXPLODE
過濾ARRAY類型:假設我們有一個名為products
的表,其中包含一個名為tags
的ARRAY類型字段,該字段包含產品標簽。
CREATE TABLE products (
id INT,
tags ARRAY<STRING>
);
要過濾出包含"electronics"標簽的產品,可以使用以下查詢:
SELECT p.*
FROM products p
LATERAL VIEW INLINE(p.tags) t AS tag
WHERE tag = 'electronics';
LATERAL VIEW
和EXPLODE
過濾MAP類型:假設我們有一個名為orders
的表,其中包含一個名為metadata
的MAP類型字段,該字段包含訂單元數據。
CREATE TABLE orders (
id INT,
metadata MAP<STRING, STRING>
);
要過濾出包含"priority"鍵且值為"high"的訂單,可以使用以下查詢:
SELECT o.*
FROM orders o
LATERAL VIEW INLINE(o.metadata) m AS key, value
WHERE key = 'priority' AND value = 'high';
這些示例展示了如何在Hive中過濾復雜數據類型。根據實際需求和數據結構,可以相應地調整查詢。