Explota la matriz de Struct en la colmena
Esta es la siguiente Tabla de Colmenas
CREATE EXTERNAL TABLE IF NOT EXISTS SampleTable
(
USER_ID BIGINT,
NEW_ITEM ARRAY<STRUCT<PRODUCT_ID: BIGINT,TIMESTAMPS:STRING>>
)
Y estos son los datos en la tabla anterior -
1015826235 [{"product_id":220003038067,"timestamps":"1340321132000"},{"product_id":300003861266,"timestamps":"1340271857000"}]
¿Hay alguna manera de que pueda obtener la siguiente salida del HiveQL después de explotar la matriz?
**USER_ID** | **PRODUCT_ID** | **TIMESTAMPS**
------------+------------------+----------------
1015826235 220003038067 1340321132000
1015826235 300003861266 1340271857000
Actualizado
Escribí esta consulta para obtener la salida en el formato anterior, pero no me está dando el resultado de la manera que quería.
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;
¿Puede alguien ayudarme qué mal estoy haciendo? Cualquier sugerencia será apreciada.
2 answers
Necesitas explotar solo una vez (junto con la VISTA LATERAL). Después de explotar puedes usar una nueva columna (llamada prod_and_ts en mi ejemplo) que será de tipo struct. Luego, puede resolver los miembros product_id y timestamps de esta nueva columna struct para recuperar el resultado deseado.
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;
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2012-07-09 12:56:01
Si está en Hive 0.10 o posterior, también podría usar inline(ARRAY<STRUCT[,STRUCT]>)
. Explota una matriz de estructuras en una tabla.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-06-26 22:46:40