Red de conocimientos sobre prescripción popular - Enciclopedia de Medicina Tradicional China - Análisis de campos complejos de Hive 1: expansión de vista horizontal

Análisis de campos complejos de Hive 1: expansión de vista horizontal

Proceso complejo de análisis de múltiples hotelids de campos de formato complejo de Hive.

1. La información de datos requerida se encuentra en el campo de valor, que está en formato json. Primero, se debe extraer la información de la lista en este campo.

get_json_object(value, '$.htllist')

2. El valor de retorno de get_JSON_object está en formato de cadena, como se detalla a continuación.

Hay '[' y ']' antes y después de la cadena. Cada {} contiene información sobre un único hotel, separado por ',' antes de {}.

4. Para separar cada {} más adelante, debe reemplazar el delimitador ',' con el delimitador ' | ' y reemplazar '[]' con ' '.

regexp_replace(regexp_replace(get_JSON_object(valor,'$.htmllist'),'},','}\\| '),' \\]|\\ [', '')

5. Separe la cadena obtenida en el paso anterior según "|" para obtener una matriz de la información de cada hotel.

Descomposición de vista lateral (split(m.htllist, '\\|')) n como htlinfo

La función 6.str_to_map convierte cada elemento de la matriz de información del hotel Convertir a formato de mapa y obtener información ['hotelid'] de él.

str _ to _ map(regexp _ replace(n . HTL info,' \\}|\\{| " ', ''), ', ', ':')['hotelid' ]

7. La extracción completa de SQL es la siguiente

select str _ to _ map(regexp _ replace(n . HTL info, ' \\}|\\{| " ', ''),',',':')['hotelid'] htlinfo, m.vid, m.sid, m.pvid, m.uid, m.cid

? from(select regexp_replace(regexp_replace(get_JSON_object(value,'$.htllist'),' },',' }\\| '),' \\]|\\[',' ')htllist, vid, sid, pvid, uid, cid

? ¿De la tabla _xxx

donde d='2018-08-08 '

y pagecode='condition1 '

? y límite de clave 100)m

? Descomposición de vista lateral (split(m.htllist, ' \\|')) n como htlinfo

donde m.htllist no está vacío