Explode the Array of Struct in Hive
To jest poniższa tabela Ula
CREATE EXTERNAL TABLE IF NOT EXISTS SampleTable
(
USER_ID BIGINT,
NEW_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
A oto dane z powyższej tabeli -
1015826235 [{"product_id":220003038067,"timestamps":"1340321132000"},{"product_id":300003861266,"timestamps":"1340271857000"}]
Czy Jest jakiś sposób na uzyskanie poniższego wyjścia z HiveQL po eksplodowaniu tablicy?
**USER_ID** | **PRODUCT_ID** | **TIMESTAMPS**
------------+------------------+----------------
1015826235 220003038067 1340321132000
1015826235 300003861266 1340271857000
Aktualizacja
Napisałem to zapytanie, aby uzyskać wynik w powyższym formacie, ale nie daje mi wyniku w sposób, w jaki chciałem.
SELECT myTable1.myCol1,myTable2.myCol2 FROM sampletable st LATERAL VIEW
explode(st.purchased_item.product_id) myTable1 AS myCol1 LATERAL VIEW
explode(st.purchased_item.timestamps) myTable2 AS myCol2;
Czy ktoś może mi pomóc, co robię źle? Wszelkie sugestie będą mile widziane. 35
2 answers
Musisz eksplodować tylko raz (w połączeniu z widokiem bocznym). Po eksplodowaniu możesz użyć nowej kolumny (o nazwie prod_and_ts w moim przykładzie), która będzie typu struct. Następnie można rozwiązać elementy product_id i timestamps nowej kolumny struct, aby uzyskać pożądany wynik.
SELECT
user_id,
prod_and_ts.product_id as product_id,
prod_and_ts.timestamps as timestamps
FROM
SampleTable
LATERAL VIEW explode(new_item) exploded_table as prod_and_ts;
68
Author: Mark Grover,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-09 12:56:01
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-07-09 12:56:01
Jeśli jesteś na Hive 0.10 lub później, możesz również użyć inline(ARRAY<STRUCT[,STRUCT]>)
. Eksploduje tablicę struktur w tabelę.
10
Author: Tariq,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-26 22:46:40
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-06-26 22:46:40