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
- 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;
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;