–Utilizar escenarios
En el escenario de recopilación real, los campos de archivo que se recopilan activamente o se envían pasivamente pueden contener cadenas json. La mayoría de estos son datos de rastreador o datos de registro. Hive proporciona un tipo de función de análisis json para preprocesar y limpiar dichos datos. Este artículo presenta la función get_json_object
–Preparación de datos
En este momento, hay una tabla DWD en DW, que contiene los campos del objeto json (esta tabla en realidad todavía pertenece a la tabla de hechos de un tipo de proceso empresarial, pero el campo contiene el objeto json, por lo que se almacena en la capa DWD, no en el ODS Hacer procesamiento), aquí solo el campo json
es una descripción json de la información de la casa
- Cómo usar
get_json_object (columna, "$. param")
La columna de parámetros es el campo a analizar. En este ejemplo, el
segundo parámetro de parámetro de result_contxt debe dividirse. Si el contenido del campo es una matriz json, use [n] .key, que significa el valor clave del número de objetos json. Un único objeto json es directamente
. La clave es un único objeto json en los datos anteriores, por lo que se
utiliza la segunda forma de análisis . Ejemplo de uso:
select
get_json_object(result_contxt, "$.house_type2") as house_type2
from
库名.表名
where
p_day = '20191127'
El resultado de la consulta es:
todos los elementos se analizan:
select
get_json_object(result_contxt,'$.house_type2')as house_type2,
get_json_object(result_contxt,'$.house_type1')as house_type1,
get_json_object(result_contxt,'$.build_type')as build_type,
get_json_object(result_contxt,'$.house_belong')as house_belong,
get_json_object(result_contxt,'$.house_direction')as house_direction,
get_json_object(result_contxt,'$.years_right')as years_right,
get_json_object(result_contxt,'$.title')as title,
get_json_object(result_contxt,'$.last_tran')as last_tran,
get_json_object(result_contxt,'$.unit_price')as unit_price,
get_json_object(result_contxt,'$.belong_area2')as belong_area2,
get_json_object(result_contxt,'$.build_year')as build_year,
get_json_object(result_contxt,'$.tran_time')as tran_time,
get_json_object(result_contxt,'$.lift')as lift,
get_json_object(result_contxt,'$.square_measure2')as square_measure2,
get_json_object(result_contxt,'$.square_measure1')as square_measure1,
get_json_object(result_contxt,'$.poi_id')as poi_id,
get_json_object(result_contxt,'$.total_price')as total_price,
get_json_object(result_contxt,'$.url')as url,
get_json_object(result_contxt,'$.floor')as floor,
get_json_object(result_contxt,'$.decorate')as decorate,
get_json_object(result_contxt,'$.village_name')as village_name,
get_json_object(result_contxt,'$.time')as time,
get_json_object(result_contxt,'$.area_county')as area_county
from
库名.表名
where p_day = '20191127'
Resultados de la consulta:
se presentan otros problemas: si el campo es una matriz json, ¿cómo analizar todo el objeto json?
Si no está seguro, consulte otra introducción al uso de la función de explosión.