Funciones de consulta comunes para comenzar con la colmena

1. Asignación de campo vacío

  • NVL: asigne valores a los datos con un valor de NULL. Su formato es NVL (valor, valor predeterminado). Su función es que si el valor es NULL, la función NVL devuelve el valor de default_value, de lo contrario, devuelve el valor del valor, y si ambos parámetros son NULL, devuelve NULL.
    por ejemplo:
select comm,nvl(comm, -1) from emp;

Consulte el campo de comunicación. Si el valor es nulo, se muestra -1.

2.CASO CUANDO

  1. Preparación de datos
name	dept_id	sex
悟空	A	男
大海	A	男
宋宋	B	男
凤姐	A	女
婷姐	B	女
婷婷	B	女

2) Demanda
Averigüe cuántos hombres y mujeres hay en diferentes sectores. Los resultados son los siguientes:

A     2       1
B     1       2

3) Cree emp_sex.txt local, importe datos
[ datos de atguigu @ hadoop102] $ vi emp_sex.txt

悟空	A	男
大海	A	男
宋宋	B	男
凤姐	A	女
婷姐	B	女
婷婷	B	女

4) Crear tabla de colmena e importar datos

create table emp_sex(
name string, 
dept_id string, 
sex string) 
row format delimited fields terminated by "\t";
load data local inpath '/opt/module/datas/emp_sex.txt' into table emp_sex;

5) Consultar datos bajo demanda

select 
  dept_id,
  sum(case sex when '男' then 1 else 0 end) male_count,
  sum(case sex when '女' then 1 else 0 end) female_count
from 
  emp_sex
group by
  dept_id;

3. Fila a columna

Descripción de funciones relacionadas
  • CONCAT (cadena A / col, cadena B / col ...): devuelve el resultado de conectar cadenas de entrada, admite cualquier número de cadenas de entrada;
  • CONCAT_WS (separador, str1, str2, ...): es una forma especial de
    CONCAT (). El separador entre los parámetros restantes del primer parámetro. El separador puede ser la misma cadena que los parámetros restantes. Si el separador es NULL, el valor de retorno también será
    NULL. Esta función omite las cadenas NULL y vacías después del parámetro separador. El separador se agregará entre las cadenas conectadas;
  • COLLECT_SET (col): la función solo acepta tipos de datos básicos. Su función principal es deduplicar y resumir el valor de un campo para producir un campo de tipo de matriz (COLLECT_LIST no deduplica y resume)
Cree constellation.txt local, importe datos
vi constellation.txt
孙悟空	白羊座	A
大海	     射手座	A
宋宋	     白羊座	B
猪八戒    白羊座	A
凤姐	     射手座	A
Crear tabla de colmena e importar datos
create table person_info(
name string, 
constellation string, 
blood_type string) 
row format delimited fields terminated by "\t";
load data local inpath "/opt/module/datas/constellation.txt" into table person_info;

6) Consultar datos bajo demanda

select
    t1.base,
    concat_ws('|', collect_set(t1.name)) name
from
    (select
        name,
        concat(constellation, ",", blood_type) base
    from
        person_info) t1
group by
    t1.base;

Inserte la descripción de la imagen aquí

Descripción de la función

EXPLODE (col): divide la matriz compleja o la estructura del mapa en una columna de colmena en varias filas. Uso de
LATERAL VIEW
: LATERAL VIEW udtf (expresión) tableAlias ​​AS columnAlias
Explicación: Usado con división, explosión y otros UDTF, puede dividir una columna de datos en múltiples filas de datos, sobre esta base, los datos divididos se pueden agregar .

Crear movie.txt local, importar datos
vi movie.txt
《疑犯追踪》	悬疑,动作,科幻,剧情
《Lie to me》	悬疑,警匪,动作,心理,剧情
《战狼2》	战争,动作,灾难
Crear tabla de colmena e importar datos
create table movie_info(
    movie string, 
    category array<string>) 
row format delimited fields terminated by "\t"
collection items terminated by ",";
load data local inpath "/opt/module/datas/movie.txt" into table movie_info;
Consultar datos bajo demanda
select
    movie,
    category_name
from 
    movie_info lateral view explode(category) table_tmp as category_name;

En realidad es lo mismo que lo siguiente:

select
    m.movie,
    table_tmp.category_name
from 
    movie_info m
     lateral view explode(category) table_tmp as category_name;
Publicado 39 artículos originales · ganado elogios 1 · vistas 4620

Supongo que te gusta

Origin blog.csdn.net/thetimelyrain/article/details/104172637
Recomendado
Clasificación