Created
May 2, 2022 17:54
-
-
Save igorborgest/822a6c8026b32f97eeb1f0c016154457 to your computer and use it in GitHub Desktop.
SparkSQL and Hive unnest examples.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- REGULAR | |
WITH | |
ORDERS(order_id, dt) AS ( | |
VALUES | |
(1, DATE('2022-01-01')), | |
(2, DATE('2022-01-02')), | |
(3, DATE('2022-01-03')) | |
), | |
ITEMS(item_id, order_id, price) AS ( | |
VALUES | |
(1, 1, 1.1), | |
(2, 1, 2.2), | |
(3, 2, 3.3) | |
) | |
SELECT order_id, item_id, price, dt | |
FROM ORDERS | |
INNER JOIN ITEMS USING(order_id); | |
-- NESTED | |
WITH | |
ORDERS(order_id, dt, items) AS ( | |
VALUES | |
( | |
1, DATE('2022-01-01'), ARRAY( | |
NAMED_STRUCT('item_id', 1, 'price', 1.1), | |
NAMED_STRUCT('item_id', 2, 'price', 2.2) | |
) | |
), | |
( | |
2, DATE('2022-01-02'), ARRAY( | |
NAMED_STRUCT('item_id', 3, 'price', 3.3) | |
) | |
), | |
( | |
2, DATE('2022-01-03'), NULL | |
) | |
) | |
SELECT order_id, ITEM.item_id, ITEM.price, dt | |
FROM ORDERS | |
LATERAL VIEW EXPLODE (ORDERS.items) as ITEM; |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
-- REGULAR | |
WITH | |
ORDERS(order_id, dt) AS ( | |
VALUES | |
(1, DATE('2022-01-01')), | |
(2, DATE('2022-01-02')), | |
(3, DATE('2022-01-03')) | |
), | |
ITEMS(item_id, order_id, price) AS ( | |
VALUES | |
(1, 1, 1.1), | |
(2, 1, 2.2), | |
(3, 2, 3.3) | |
) | |
SELECT order_id, item_id, price, dt | |
FROM ORDERS | |
LEFT JOIN ITEMS USING(order_id); | |
-- NESTED | |
WITH | |
ORDERS(order_id, dt, items) AS ( | |
VALUES | |
( | |
1, DATE('2022-01-01'), ARRAY( | |
NAMED_STRUCT('item_id', 1, 'price', 1.1), | |
NAMED_STRUCT('item_id', 2, 'price', 2.2) | |
) | |
), | |
( | |
2, DATE('2022-01-02'), ARRAY( | |
NAMED_STRUCT('item_id', 3, 'price', 3.3) | |
) | |
), | |
( | |
2, DATE('2022-01-03'), NULL | |
) | |
) | |
SELECT order_id, ITEM.item_id, ITEM.price, dt | |
FROM ORDERS | |
LATERAL VIEW OUTER EXPLODE (ORDERS.items) as ITEM; |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment