Funciones y sintaxis de uso común en Hive y ejemplos de escenarios comerciales

Funciones y sintaxis de uso común en Hive y ejemplos de escenarios comerciales

función agregada

collect_list: recopila valores de columna en una matriz

collect_listLa función se utiliza para recopilar los valores de la columna especificada en una matriz y devolver la matriz como resultado. A menudo se GROUP BYusa en cláusulas para recopilar valores de la misma clave en una matriz para operaciones agregadas

La siguiente es collect_listla sintaxis de la función:

collect_list(column)

donde columnestá el nombre de la columna o la expresión para recopilar.

collect_listLa función recopila los valores de la columna especificada en una matriz y devuelve la matriz resultante. Por ejemplo, si desea categoryagrupar una tabla por columnas y productrecopilar los valores de las columnas de cada grupo en una matriz, puede utilizar la siguiente consulta:

SELECT category, collect_list(product) AS products
FROM your_table
GROUP BY category;

Esta consulta agrupará categorypor columna y para cada grupo creará una matriz productsque contenga todos productlos valores de ese grupo.

Precauciones:

  • collect_listLa función devuelve una matriz, que puede contener valores repetidos.
  • Si desea eliminar valores duplicados en una matriz, puede usar collect_setuna función en su lugar.
  • Las funciones en Hive collect_listrequieren que todos los valores que se recopilen quepan en la memoria, por lo que debe tener en cuenta las limitaciones de memoria cuando se trata de grandes volúmenes de datos. Si la cantidad de datos es demasiado grande, es posible que deba considerar otras formas de realizar operaciones de agregación.

Uso de ejemplo de función:

Supongamos que hay una orderstabla nombrada con las siguientes columnas: order_id(ID de pedido), customer_id(ID de cliente) y product(Nombre de producto).

+----------+-------------+-------------------+
| order_id | customer_id | product           |
+----------+-------------+-------------------+
| 1        | 101         | iPhone            |
| 2        | 101         | MacBook Pro       |
| 3        | 102         | iPad              |
| 4        | 102         | Apple Watch       |
| 5        | 102         | AirPods           |
+----------+-------------+-------------------+

Para customer_idagrupar y recopilar los elementos de cada grupo producten una matriz, puede utilizar la siguiente consulta:

SELECT customer_id, collect_list(product) AS products
FROM orders
GROUP BY customer_id;

Los resultados de la consulta se verán así:

+-------------+----------------------------------+
| customer_id | products                         |
+-------------+----------------------------------+
| 101         | ["iPhone", "MacBook Pro"]         |
| 102         | ["iPad", "Apple Watch", "AirPods"]|
+-------------+----------------------------------+

Para cada customer_idagrupación, collect_listla función recopila los valores de esa agrupación producten una matriz y devuelve la matriz como resultado.

tamaño: devuelve el número de elementos de matriz o mapa

La función SIZE() se usa para devolver el tamaño (número de elementos) de una matriz o mapa. Se puede usar para contar la cantidad de elementos en una columna de tipos de colección, como matrices y mapas.

La función SIZE() se usa principalmente para calcular el tamaño de los tipos de colección (matrices y mapas) y proporciona estadísticas y capacidades de análisis para la cantidad de elementos de la colección.

Introducción a la función: La función SIZE(colección) acepta un parámetro de tipo de colección (matriz o mapa) y devuelve el número de elementos de la colección.

Ejemplo: suponga que tiene una tabla employeesque contiene una identificación de empleado (employee_id) y una matriz de habilidades (skills). Para calcular la cantidad de habilidades que tiene cada empleado, use la función SIZE():

SELECT employee_id, SIZE(skills) AS num_skills
FROM employees;

Esto devolverá un conjunto de resultados que contiene las identificaciones de los empleados y la cantidad de habilidades que poseen. La función SIZE() calculará el tamaño de cada matriz y num_skillslo devolverá como el valor de la columna.

Además, la función SIZE() también se puede utilizar para calcular el número de pares clave-valor en el mapa. Supongamos que hay una tabla product_salesque contiene un mapa de ID de productos (product_id) y ventas (sales_by_month). Para calcular el número de meses de venta de cada producto, se puede utilizar la función SIZE():

SELECT product_id, SIZE(sales_by_month) AS num_months
FROM product_sales;

Esto devolverá un conjunto de resultados con la identificación del producto y la cantidad para el mes de venta. La función SIZE() contará el número de pares clave-valor en cada Mapa y num_monthslo devolverá como el valor de la columna.

La función SIZE() es una de las funciones comunes que se utilizan para calcular el tamaño de los tipos de colección (matrices y mapas) en Hive. Puede ayudarnos a realizar estadísticas y análisis de la cantidad de elementos en la colección, para obtener información sobre la estructura y las características de los datos.

Ejemplo de escenario empresarial:

  1. Análisis de redes sociales: supongamos que hay una tabla de usuarios de una plataforma de redes sociales, que contiene una identificación de usuario (user_id) y una lista de amigos de un usuario (amigos). La lista de amigos es una matriz que almacena ID de amigos. Para analizar la distribución del número de amigos de cada usuario, se puede calcular el tamaño de la lista de amigos mediante la función SIZE():
SELECT user_id, SIZE(friends) AS num_friends
FROM user_friends;
  1. Análisis de la cesta de la compra: Supongamos que hay una tabla de pedidos de una plataforma de comercio electrónico, que contiene un ID de pedido (order_id) y una lista de productos (artículos). La lista de productos es una matriz que contiene varios ID de productos, que representan varios productos comprados en un pedido. Para analizar la cantidad de artículos comprados en cada pedido, el tamaño de la lista de artículos se puede calcular usando la función SIZE():
SELECT order_id, SIZE(items) AS num_items
FROM orders;
  1. Análisis de registro: suponga que hay una tabla de registro que contiene información de registro de los usuarios que visitan páginas web, incluido el ID de usuario (user_id) y la lista de páginas visitadas (páginas). La lista de páginas es una matriz que almacena URL de páginas. Para analizar la distribución del número de páginas visitadas por cada usuario, el tamaño de la lista de páginas se puede calcular utilizando la función SIZE():
SELECT user_id, SIZE(pages) AS num_pages
FROM user_logs;

longitud - devuelve la longitud de la cadena

length()Función utilizada para devolver la longitud (número de caracteres) de una cadena. Toma una cadena como argumento y devuelve el número de caracteres en esa cadena

Ejemplo de cómo utilizar la función:

SELECT length('Hello, World!') AS str_length;

Resultado de salida:

str_length
------------
13

En el ejemplo anterior, length('Hello, World!')se devuelve el número de caracteres de la cadena 'Hello, World!', que es 13.

La función LENGTH() se usa principalmente para calcular la longitud del tipo de cadena, que se puede usar para verificar el límite de longitud de la cadena, realizar la interceptación de cadenas y otras operaciones.

Para cadenas, la función LENGTH() devuelve la cantidad de caracteres en la cadena (incluidos espacios y caracteres especiales)

función de ventana

lag: obtenga el valor de la fila que precede a la fila actual en el conjunto de resultados

La función LAG() se usa para obtener el valor de la fila que precede a la fila actual en el conjunto de resultados. Se puede usar para realizar operaciones de función de ventana, dando a cada fila el valor de la fila anterior.

Introducción a la función: la función LAG (expresión, desplazamiento, valor predeterminado) devuelve el valor de la fila antes del desplazamiento especificado de la fila actual. Si no hay una fila anterior (por ejemplo, la fila actual es la primera fila), devuelve el valor predeterminado especificado. Por lo general, se usa con la cláusula OVER y la cláusula ORDER BY.

Ejemplo de escenario empresarial:

  1. Cálculo de la tasa de crecimiento de ventas: suponga que hay una tabla de datos de ventas que contiene las ventas mensuales (sales_amount). Para calcular la tasa de crecimiento de las ventas de cada mes, puede utilizar la función LAG() para obtener las ventas del mes anterior y calcular la tasa de crecimiento:
SELECT month, sales_amount,
    (sales_amount - LAG(sales_amount, 1, 0) OVER (ORDER BY month)) / LAG(sales_amount, 1, 1) OVER (ORDER BY month) AS sales_growth_rate
FROM sales_data;
  1. Análisis del comportamiento del usuario: supongamos que hay una tabla de registro de usuarios que contiene el ID de usuario (user_id) y la hora de inicio de sesión (login_time). Para analizar el tiempo de intervalo de inicio de sesión del usuario, puede utilizar la función LAG() para obtener la hora del último inicio de sesión y calcular el tiempo de intervalo:
SELECT user_id, login_time,
    login_time - LAG(login_time, 1, login_time) OVER (PARTITION BY user_id ORDER BY login_time) AS time_interval
FROM user_logs;
  1. Cálculo de cambios de inventario: supongamos que hay una tabla de transacciones de inventario que contiene el ID del producto (product_id), la fecha de la transacción (transaction_date) y la cantidad de la transacción (transaction_quantity). Para calcular el cambio de inventario para cada transacción, puede usar la función LAG() para obtener la cantidad de la última transacción y calcular el cambio:
SELECT product_id, transaction_date, transaction_quantity,
    transaction_quantity - LAG(transaction_quantity, 1, 0) OVER (PARTITION BY product_id ORDER BY transaction_date) AS inventory_change
FROM inventory_transactions;

En estos ejemplos, la función LAG() se usa para obtener el valor de la fila anterior en el conjunto de resultados para cálculos o análisis relacionados. De esta manera, puede manejar fácilmente series temporales, comparar filas de datos anteriores y posteriores, etc., y ayudar a profundizar en el análisis y la comprensión de los datos. Según las necesidades comerciales específicas, puede combinar otras funciones y cláusulas para crear consultas analíticas complejas.

lead: obtenga el valor de la fila después de la fila actual en el conjunto de resultados

La función LEAD() se usa para obtener el valor de la fila que sigue a la fila actual en el conjunto de resultados. Se puede utilizar para realizar operaciones de función de ventana, proporcionando a cada fila el valor de la fila siguiente.

Introducción a la función: la función LEAD(expression, offset, default_value) devuelve el valor de la fila después del desplazamiento especificado de la fila actual. Si no hay líneas siguientes (por ejemplo, la línea actual es la última línea), se devuelve el valor predeterminado especificado. Por lo general, se usa con la cláusula OVER y la cláusula ORDER BY.

Ejemplo de escenario empresarial:

  1. Análisis de datos periódicos: supongamos que hay una tabla de datos de ventas que contiene el ID del producto (product_id), la fecha de venta (sale_date) y el volumen de ventas (sales_quantity). Para calcular la tasa de crecimiento de las ventas de cada producto, puede utilizar la función LEAD() para obtener el volumen de ventas del día siguiente y calcular la tasa de crecimiento:
SELECT product_id, sale_date, sales_quantity,
    (LEAD(sales_quantity, 1, 0) OVER (PARTITION BY product_id ORDER BY sale_date) - sales_quantity) / sales_quantity AS sales_growth_rate
FROM sales_data;
  1. Análisis de la actividad del usuario: supongamos que hay una tabla de actividad del usuario, que contiene el ID de usuario (user_id) y la fecha activa (active_date). Para analizar la cantidad de días activos consecutivos para cada usuario, puede usar la función LEAD() para obtener la fecha activa del día siguiente y calcular la cantidad de días activos consecutivos:
SELECT user_id, active_date,
    DATEDIFF(LEAD(active_date, 1, active_date) OVER (PARTITION BY user_id ORDER BY active_date), active_date) AS consecutive_active_days
FROM user_activity;
  1. Análisis de datos bursátiles: supongamos que hay una tabla de datos de transacciones bursátiles que contiene el código bursátil (código_stock), la fecha de la transacción (fecha_negociación) y el precio de cierre (precio_cierre). Para calcular la subida y bajada de cada acción, puede utilizar la función LEAD() para obtener el precio de cierre del día siguiente y calcular la subida y bajada:
SELECT stock_code, trade_date, closing_price,
    (LEAD(closing_price, 1, closing_price) OVER (PARTITION BY stock_code ORDER BY trade_date) - closing_price) / closing_price AS price_change_rate
FROM stock_data;

En estos ejemplos, la función LEAD() se usa para obtener el valor de la siguiente fila en el conjunto de resultados para cálculos o análisis relacionados. Esto facilita el manejo de series temporales, la comparación de datos de primera y última fila, etc.

row_number: devuelve el número de fila en el conjunto de resultados

row_number()es una función de ventana que asigna un número de secuencia único a cada fila en el conjunto de resultados de la consulta. A menudo se usa para asignar un número de serie a cada fila después de ordenar o agrupar los resultados de la consulta para un mayor procesamiento o filtrado de datos.

row_number()La sintaxis de la función es la siguiente:

row_number() over ([partition by col1, col2, ...] order by col3, col4, ...)
  • partition byLa cláusula es opcional y se usa para especificar las columnas por las que agrupar. row_number()Si se especifica una columna de agrupación, el número de secuencia se calculará de forma independiente dentro de cada grupo , es decir, el número de secuencia de la primera fila de cada grupo es 1.
  • order byLa cláusula se utiliza para especificar las columnas a ordenar. Los resultados de la consulta se ordenarán según el orden de las columnas especificadas.

Aquí hay un ejemplo que muestra cómo usar row_number()la función:

SELECT col1, col2, col3, row_number() OVER (ORDER BY col3) as row_num
FROM table_name;

En el ejemplo anterior, row_number()la función ordena por col3los valores de la columna y asigna a cada fila un número ordinal, que se almacena en una row_numnueva columna llamada .

función condicional

ifnull: devuelve el valor de la segunda expresión si la primera expresión es nula; de lo contrario, devuelve el valor de la primera expresión

La función IFNULL() se usa para reemplazar valores NULL con un valor predeterminado especificado. Acepta dos argumentos: la expresión a comprobar y un valor por defecto. Si el valor de la expresión es NULL, la función IFNULL() devolverá el valor predeterminado; de lo contrario, devolverá el valor de la expresión.

Introducción a la función: la función IFNULL(expresión, valor_predeterminado) se usa para manejar valores NULL. Cuando el valor de la expresión es NULL, se devuelve el valor predeterminado especificado para garantizar que el conjunto de resultados no contenga valores NULL.

Ejemplo de escenario empresarial:

  1. Calcule la calificación promedio: suponga que hay una tabla de calificación de películas, que contiene la identificación de la película (movie_id) y la calificación (rating). En algunos casos, la columna de puntuación puede contener valores NULL. Para calcular la calificación promedio de una película, puede usar la función IFNULL() para reemplazar los valores NULL con 0 y calcular el promedio:
SELECT movie_id, AVG(IFNULL(rating, 0)) AS avg_rating
FROM movie_ratings
GROUP BY movie_id;
  1. Ajuste el nivel de ventas: suponga que hay una tabla de pedidos de ventas que contiene el ID del cliente (customer_id) y el monto del pedido (order_amount). En algunos casos, el monto del pedido puede ser NULL. Para el análisis de la medida de ventas, la función IFNULL() se puede utilizar para reemplazar los valores NULL con 0 y calcular la medida de ventas ajustada:
SELECT customer_id, IFNULL(order_amount, 0) AS adjusted_amount
FROM sales_orders;
  1. Contar la cantidad de valores nulos: en el análisis de calidad de datos, contar la cantidad de valores nulos en una columna es un requisito común. Supongamos que hay una tabla de usuarios que contiene la identificación del usuario (user_id) y la dirección de correo electrónico (email). Para contar la cantidad de valores nulos, puede usar la función IFNULL() para reemplazar el valor NULL con 1 y contar la suma de los valores reemplazados:
SELECT SUM(IFNULL(email, 1)) AS null_count
FROM users;

En estos ejemplos, la función IFNULL() se usa para manejar valores NULL, reemplazándolos con valores predeterminados o resultados de cálculos específicos. Esto garantiza que los valores NULL no se incluyan en el conjunto de resultados al realizar cálculos agregados, análisis de datos o comprobaciones de calidad de los datos, y proporciona una forma de gestionar los datos faltantes o no válidos. De acuerdo con los requisitos comerciales específicos, la función IFNULL() se puede aplicar de manera flexible para cumplir con los diferentes requisitos de procesamiento de datos.

nvl: devuelve el valor de la segunda expresión si la primera expresión está vacía; de lo contrario, devuelve el valor de la primera expresión

NVL()Las funciones se utilizan para manejar el caso de valores NULL. Acepta dos parámetros: el primer parámetro es la expresión o columna a verificar, y el segundo parámetro es el valor de reemplazo. Si el primer parámetro está vacío (NULL), devuelve el segundo parámetro como valor de sustitución; de lo contrario, devuelve el valor del primer parámetro.

El siguiente es NVL()un ejemplo de la sintaxis de una función:

NVL(expression, substitute_value)
  • expression: la expresión o columna que se va a comprobar y, si es NULL, se devuelve un valor alternativo.
  • substitute_value: un valor de sustitución, que se devuelve si la expresión está vacía.

NVL()Aquí hay una consulta de ejemplo que demuestra cómo usar funciones en Hive :

SELECT name, NVL(age, 0) AS age
FROM persons;

En el ejemplo anterior, personshay dos columnas en la tabla: namey age. Si agela columna está vacía, se utiliza 0 como valor alternativo. Los resultados de la consulta devolverán namecolumna y agecolumna (si no está vacío) o un valor alternativo de 0 (si está vacío).

NVL()Las funciones son útiles para manejar valores nulos, lo que permite especificar valores alternativos en las consultas para evitar valores nulos potencialmente problemáticos.

coalesce: devuelve el primer valor de expresión no nulo en la lista de argumentos

COALESCE()La función se usa para devolver el primer valor no vacío (no NULL) de un conjunto de expresiones. Acepta múltiples parámetros y los verifica uno por uno en orden, devolviendo el primer valor no nulo. Devuelve NULL si todos los parámetros están vacíos

Sintaxis de uso de la función:

COALESCE(expr1, expr2, expr3, ...)

Descripción de parámetros:

  • expr1, expr2, expr3, ...: Lista de expresiones a comprobar.

Al usar COALESCE()la función, Hive verifica los argumentos uno por uno de izquierda a derecha y devuelve el primer valor no nulo. Devuelve NULL si todos los argumentos son nulos.

Ejemplo de uso: supongamos que tenemos una tabla my_tablecon dos columnas col1y col2queremos obtener el primer valor no nulo en estas dos columnas.

SELECT COALESCE(col1, col2) AS result
FROM my_table;

En el ejemplo anterior, COALESCE(col1, col2)la expresión primero verificará col1el valor de y devolverá el valor si no está vacío col1; si col1está vacío, continúe verificando col2el valor de y regrese. Finalmente, creamos AS resultun alias para el resultado a través de , que se llama result.

COALESCE()Las funciones son útiles para trabajar con columnas o variables que pueden ser nulas. Asegura que siempre haya un valor no nulo al procesar expresiones, evitando así valores NULL.

Específico para el uso en el código:

coalesce(`eid`,'')

El significado de la función es eidseleccionar un valor no nulo entre la columna y la cadena vacía como resultado. Si eidel valor de la columna no está vacío, devuelve eidel valor de la columna; si eidel valor de la columna está vacío, devuelve una cadena vacía

funciones de cadena

split - divide la cadena por el delimitador especificado

SPLIT()La función se usa para dividir una cadena de acuerdo con el delimitador especificado y devolver una matriz de cadenas. La función acepta dos parámetros: la cadena a dividir y el delimitador

La sintaxis de la función es la siguiente:

SPLIT(str, delimiter)

Descripción de parámetros:

  • str: La cadena a dividir.
  • delimiter: delimitador, utilizado para especificar dónde dividir la cadena.

Valor devuelto: SPLIT()la función devuelve una matriz de cadenas que contiene las subcadenas divididas por el delimitador especificado.

Ejemplo de uso:

SELECT SPLIT('Hello,World,How,Are,You', ',') AS result;

Resultado de salida:

["Hello", "World", "How", "Are", "You"]

En el ejemplo anterior, SPLIT()la función divide la cadena 'Hello,World,How,Are,You'en comas ,y devuelve una matriz de cadenas ["Hello", "World", "How", "Are", "You"]. Cada sección separada por comas se convierte en un elemento de la matriz. Tenga en cuenta que el resultado devuelto es una matriz de cadenas, con cada elemento entre comillas dobles.

Específico para el uso en el código:

split(`hisentname`,';')

Dividir hisentnameel valor en el campo usando;

concat - concatena dos o más cadenas

CONCAT()Las funciones se utilizan para concatenar varias cadenas en una cadena. Toma dos o más cadenas como parámetros y devuelve el resultado de concatenar esas cadenas

Uso de ejemplo de función:

Supongamos que tenemos dos cadenas 'Hello'y 'World', y queremos concatenarlas en una sola cadena 'Hello World'.

SELECT CONCAT('Hello', ' ', 'World') AS result;

En el ejemplo anterior, CONCAT('Hello', ' ', 'World')la expresión concatena 'Hello', el espacio y 'World'estas tres cadenas para obtener 'Hello World'.

CONCAT()Las funciones pueden aceptar varios parámetros, que pueden ser constantes de cadena, nombres de columna u otras expresiones. Concatena los argumentos en una sola cadena en el orden en que aparecen en la función. Si hay un valor NULL en el parámetro, el parámetro se ignorará y no afectará el resultado de la conexión.

Ejemplo de uso: supongamos que tenemos una tabla my_tablecon dos columnas y queremos concatenarlas first_nameen last_nameun nombre completo.

SELECT CONCAT(first_name, ' ', last_name) AS full_name
FROM my_table;

En el ejemplo anterior, CONCAT(first_name, ' ', last_name)la expresión concatena first_nameel valor de la columna, un carácter de espacio y last_nameel valor de la columna para obtener el nombre completo. AS full_nameEl resultado recibe un alias de , el alias es full_name.

Nota: En Hive SQL, CONCAT()la cantidad de parámetros que una función puede aceptar es limitada (generalmente 256). Si necesita concatenar una gran cantidad de cadenas, es posible que deba dividirlas en varias CONCAT()llamadas de función.

recortar - eliminar espacios de ambos extremos de una cadena

TRIM()Función para eliminar espacios o caracteres especificados desde el principio y el final de una cadena.

La sintaxis de la función es la siguiente:

TRIM([BOTH | LEADING | TRAILING] trim_character FROM input_string)

Descripción de parámetros:

  • BOTH: Elimina caracteres del principio y final de la cadena, también se usa por defecto BOTH.
  • LEADING: solo elimina los caracteres al principio de la cadena.
  • TRAILING: solo elimina los caracteres al final de la cadena.
  • trim_character: el carácter o la cadena que se eliminará; el valor predeterminado es eliminar los caracteres de espacio.
  • input_string: La cadena a procesar.

Ejemplo:

SELECT TRIM('   Hello World   ') AS trimmed_string;

Resultado de salida:Hello World

En el ejemplo anterior, TRIM()la función elimina ' Hello World 'los espacios en blanco del principio y el final de la cadena y devuelve la cadena procesada'Hello World'

Específico para el uso en el código:

trim(`entname`)

entnameEliminar los espacios en blanco iniciales y finales de los campos

regexp - comprueba si una cadena coincide con una expresión regular especificada

regexpFunción utilizada para comprobar si una cadena coincide con un patrón de expresión regular especificado

La sintaxis de la función es la siguiente:

regexp(string, pattern)
  • string: La cadena para hacer coincidir.
  • pattern: Modo de expresión regular, utilizado para especificar reglas de coincidencia.

La función devuelve un valor booleano si la cadena dada coincide con el patrón de expresión regular; de lo contrario, truedevuelve false.

Aquí hay unos ejemplos:

  1. Comprueba si una cadena coincide con un patrón de expresión regular especificado:
SELECT regexp('hello', '^h.*');

producción:true

En este ejemplo, la cadena dada es "hola" y el patrón de expresión regular es "^h.*", que representa cualquier cadena que comience con la letra "h". Dado que la cadena "hola" comienza con "h", coincide correctamente y devuelve true.

  1. Use funciones en consultas regexppara filtrar datos:
SELECT column_name
FROM table_name
WHERE regexp(column_name, '[0-9]+');

[0-9]+Esta instrucción seleccionará filas de datos en una columna de una tabla que coincida con un patrón de expresión regular . Este patrón representa una secuencia de uno o más dígitos. Solo se devolverán las filas que coincidan con el patrón.

Nota: En Hive SQL, los patrones de expresiones regulares se basan en la sintaxis de expresiones regulares de Java. Por lo tanto, puede utilizar las reglas de sintaxis de las expresiones regulares de Java para crear patrones.

Específico para el uso en el código:

case when `credit_code` regexp '0{18}' then null 
else upper(regexp_replace(`credit_code`,'\\s',''))
end as `uscc_code` 
  1. when credit_code regexp '0{18}' then nullsignifica que si credit_codeel valor de la columna coincide con el patrón de expresión regular 0{18}(es decir, 18 0 consecutivos), devuelve NULL.
  2. else upper(regexp_replace(credit_code ,'\\s',''))indica que si credit_codeel valor de la columna no coincide con el patrón de expresión regular 0{18}, credit_codeel valor de la columna se procesará como superior.
  • regexp_replace(credit_code ,'\\s','')Reemplaza credit_codelos caracteres de espacio en la columna con cadenas vacías. \ses la representación de un carácter de espacio en una expresión regular.
  • upper(...)Convierta el valor procesado credit_codea mayúsculas.

Finalmente, dependiendo de la condición, uscc_codeel valor de la columna puede ser NULL (cuando credit_codecoincide con 18 0 consecutivos) o una cadena de letras mayúsculas procesada (cuando credit_codeno coincide con 18 0 consecutivos).

regexp_replace: reemplaza las coincidencias en una cadena con una expresión regular

regexp_replace()Función para reemplazar partes de una cadena que coincidan con una expresión regular

La sintaxis de la función es la siguiente:

regexp_replace(string, pattern, replacement)
  • string: La cadena a ser reemplazada.
  • pattern: El patrón de expresión regular para hacer coincidir.
  • replacement: Reemplace la parte coincidente de la cadena.

Esta función buscará en la cadena dada partes que coincidan con el patrón de expresión regular y las reemplazará con la cadena de reemplazo. Si no se encuentra ninguna parte coincidente, se devuelve la cadena original.

Aquí hay unos ejemplos:

  1. Reemplace números en una cadena con caracteres específicos:
SELECT regexp_replace('Hello123World456', '[0-9]', '*');

producción:Hello***World***

  1. Eliminar espacios de una cadena:
SELECT regexp_replace('Hello World', '\\s', '');

producción:HelloWorld

  1. Reemplace todas las comas en una cadena con punto y coma:
SELECT regexp_replace('a,b,c,d', ',', ';');

producción:a;b;c;d

  1. Use una cadena vacía para eliminar un patrón específico en una cadena:
SELECT regexp_replace('abc123def456', '[a-z]', '');

producción:123456

Nota: En Hive SQL, la sintaxis de las expresiones regulares puede ser ligeramente diferente y debe ajustarse según los requisitos específicos y las versiones de Hive.

Específico para el uso en el código:

regexp_replace(`credit_code`,'\\s','')

Este código reemplazará credit_codelos caracteres de espacio (es decir, espacios) en la columna de campo \scon cadenas vacías. \\sLa doble barra invertida es para escapar de la barra invertida, porque la barra invertida en sí también necesita escaparse en la expresión regular.

Esto significa que si credit_codela columna contiene caracteres de espacio en blanco, se reemplazarán con cadenas vacías. Por ejemplo, si credit_codeel valor de es ABC 123 DEF, el resultado después del reemplazo es ABC123DEF, es decir, se eliminan los caracteres de espacio.

Específico para el uso en el código:

regexp_replace(
	regexp_replace(
		regexp_replace(`hisentname`, ';', ';')
		,'&|nbsp;|&|/|:|:|\\.|企业基本信息|名称|企业(机构)名称|企业名称|名称序号|联系电话|第一名称|第二名称|序号|【变更前内容】|\\*|-|[0-9]|[a-zA-Z]', ''
		)
	, '\\s', '') 
AS `hisentname`

Este código se usa para hisentnamerealizar múltiples operaciones de reemplazo en el valor de la columna y almacenar los resultados procesados ​​en hisentnamela columna.

  1. regexp_replace(hisentname ,';',';')reemplaza hisentnameel punto y coma chino (;) en la columna con el punto y coma inglés (;). Esta es la primera operación de reemplazo.
  2. regexp_replace(...,'&|nbsp;|&|/|:|:|\\\.|企业基本信息|名称|企业(机构)名称|企业名称|名称序号|联系电话|第一名称|第二名称|序号|【变更前内容】|\\\*|-|[0-9]|[a-zA-Z]','')Utilice la coincidencia de patrones de expresiones regulares para hisentnamereemplazar algunos caracteres especiales y palabras clave en la columna. Los contenidos específicos que se reemplazarán incluyen: &, nbsp;, &, /, :, :, ., información básica de la empresa, nombre, nombre de la empresa (organización), nombre de la empresa, número de serie del nombre, número de contacto, nombre, segundo nombre, número de serie, 【contenido antes del cambio】, * (la barra invertida debe escaparse), números y letras. Esta es la segunda operación de reemplazo.
  3. regexp_replace(...,'\\s','')Reemplaza los caracteres de espacio en la cadena reemplazada anterior con una cadena vacía. Esta es la tercera operación de reemplazo. \ses la representación de un carácter de espacio en una expresión regular.

Finalmente, después de tres operaciones de reemplazo, la cadena procesada se almacena en hisentnamela columna.

substr - devuelve una subcadena de una cadena

SUBSTR()función para extraer una subcadena de una cadena

La sintaxis de la función es la siguiente:

SUBSTR(string, start, length)

en:

  • stringes la cadena original de la que extraer la subcadena.
  • startEs el índice de posición para comenzar a buscar, el índice comienza desde 1.
  • lengthes la longitud de la subcadena a extraer.

SUBSTR()La función devuelve la subcadena extraída de la cadena original.

Ejemplo: supongamos que hay una cadena Hello, World!y queremos extraer una subcadena de ella World, podemos usar la siguiente declaración:

SUBSTR('Hello, World!', 8, 5)

-- SELECT SUBSTR('Hello, World!', 8, 5);
-- 输出结果为 World

En el código anterior, SUBSTR('Hello, World!', 8, 5)significa extraer una subcadena de longitud 5 desde la octava posición de la cadena

superior/inferior: convierte la cadena a mayúsculas/minúsculas

upper()Función para convertir una cadena a mayúsculas

La sintaxis de la función es la siguiente:

upper(string)
  • string: La cadena que se convertirá a mayúsculas.

Esta función convierte todos los caracteres de la cadena dada a mayúsculas y devuelve el resultado convertido.

Aquí hay unos ejemplos:

  1. Convertir una cadena a mayúsculas:
SELECT upper('hello world');

producción:HELLO WORLD

  1. Convierta cadenas en una columna a mayúsculas:
SELECT upper(column_name) FROM table_name;

Esta declaración selecciona una columna en una tabla y convierte todos los valores de cadena en la columna a mayúsculas.

Nota: upper()La función no distingue entre mayúsculas y minúsculas en Hive SQL, por lo que se puede usar en cualquier cadena, independientemente de su caso original.

lower()usa lo mismo upper(), el efecto es opuesto

explotar: dividir una matriz o un mapa en varias líneas

LATERAL VIEW EXPLODE()Popularmente conocida como función de ráfaga, se utiliza para dividir una columna de matriz (Array) en varias filas y generar cada elemento de la matriz como una nueva fila. Esta función generalmente se SELECTusa junto con la instrucción

Sintaxis de uso de la función:

SELECT ...
FROM ...
LATERAL VIEW EXPLODE(array_column) table_alias AS column_alias

Descripción de parámetros:

  • array_column: La columna de matriz para dividir (Array).
  • table_alias: alias de la tabla generada.
  • column_alias: alias de columna generado.

Al usar LATERAL VIEW EXPLODE()la función, Hive tratará cada elemento de la columna de la matriz como una nueva fila y lo colocará en table_aliasla tabla especificada por . Luego puede SELECThacer referencia a él en una declaración column_aliasy realizar un procesamiento adicional en la línea de división.

Ejemplo de uso: supongamos que tenemos una tabla my_tablecon una array_colcolumna de matriz llamada y queremos dividir la matriz en filas.

SELECT column_alias
FROM my_table
LATERAL VIEW EXPLODE(array_col) my_table_alias AS column_alias;

En el ejemplo anterior, LATERAL VIEW EXPLODE()la función divide la columna de matriz my_tablede la tabla array_colen filas. Cada elemento de la matriz se convierte en una nueva fila, y my_table_aliasestas filas divididas se denominan alias. Puede SELECTseleccionar las columnas requeridas en el extracto y realizar más operaciones en las filas divididas.

Tenga en cuenta que LATERAL VIEW EXPLODE()la función solo se puede usar para dividir columnas de matriz, no para otros tipos de columnas

función de fecha

dateiff - devuelve la diferencia en días entre dos fechas

datediff()Función para calcular la diferencia de días entre dos fechas. Toma dos fechas como parámetros de entrada y devuelve un número entero que representa la diferencia en días entre la primera fecha y la segunda fecha.

La sintaxis de la función es la siguiente:

datediff(enddate, startdate)

Entre ellos, enddateestán startdatelos parámetros de fecha, que pueden ser de tipo cadena o de tipo fecha. enddateindica una fecha posterior, e startdateindica una fecha anterior.

Aquí hay unos ejemplos:

Ejemplo 1:

SELECT datediff('2023-06-27', '2023-06-20');

La salida es: 7

Ejemplo 2:

SELECT datediff('2023-06-01', '2023-07-01');

La salida es: -30

En el ejemplo 1, la primera fecha es '2023-06-27' y la segunda fecha es '2023-06-20', y la diferencia de días entre ellas es 7.

En el ejemplo 2, la primera fecha es '2023-06-01' y la segunda fecha es '2023-07-01', dado que la primera fecha es posterior, el resultado es negativo, lo que indica que la primera fecha es 30 días antes la segunda fecha.

Nota: datediff()La función calcula la diferencia en días entre dos fechas, independientemente de la zona horaria y la parte horaria.

current_timestamp - devuelve la marca de tiempo actual

CURRENT_TIMESTAMP()La función se utiliza para obtener la marca de tiempo actual, que representa la fecha y la hora actuales.

CURRENT_TIMESTAMP()La función no tiene parámetros, devuelve un valor de marca de tiempo, generalmente en el formato de 'yyyy-MM-dd HH:mm:ss' o 'yyyy-MM-dd HH:mm:ss.SSS'.

Uso de ejemplo de función:

SELECT CURRENT_TIMESTAMP() AS current_time;

Resultado de salida: 2023-06-05 12:34:56

En el ejemplo anterior, CURRENT_TIMESTAMP()la función devuelve la fecha y hora actuales, es decir '2023-06-05 12:34:56', . Tenga en cuenta que la salida real variará según la hora actual del sistema.

función de matriz

sort_array - Ordenar una matriz

sort_arrayLa función se usa para ordenar una matriz y devuelve la matriz ordenada como resultado. Se puede utilizar para realizar operaciones de clasificación en matrices que contienen elementos.

sort_array() se usa a menudo junto con la función collect_list()

La siguiente es sort_arrayla sintaxis de la función:

sort_array(array[, ascendingOrder])

Entre ellos, arrayestá la matriz que se ordenará, ascendingOrderes un parámetro opcional, especifica si ordenar en orden ascendente, el valor predeterminado es true(ascendente).

sort_arrayLa función ordena la matriz dada y devuelve la matriz ordenada. Si no se especifica un orden de clasificación, el valor predeterminado se ordena en orden ascendente.

sort_arrayEjemplo de uso de la función:

Supongamos que hay una numberstabla nombrada con las siguientes columnas: id(número) y values(matriz que contiene números enteros).

+----+----------------------+
| id | values               |
+----+----------------------+
| 1  | [5, 3, 2, 4, 1]      |
| 2  | [9, 7, 6, 8, 10]     |
+----+----------------------+

Para valuesordenar una matriz, se puede utilizar la siguiente consulta:

SELECT id, sort_array(values) AS sorted_values
FROM numbers;

Los resultados de la consulta se verán así:

+----+----------------------+
| id | sorted_values        |
+----+----------------------+
| 1  | [1, 2, 3, 4, 5]      |
| 2  | [6, 7, 8, 9, 10]     |
+----+----------------------+

Para cada fila, sort_arrayla función valuesordena la matriz y devuelve la matriz ordenada como resultado.

Cabe señalar que sort_arrayla función solo ordena los elementos de la matriz y no cambia los valores de otras columnas. Durante el proceso de clasificación, los elementos de la matriz se clasifican según sus tipos de datos predeterminados, por ejemplo, los números enteros se clasifican por valor numérico y las cadenas se clasifican por orden alfabético.

array_contains - Comprueba si una matriz contiene el elemento especificado

La función ARRAY_CONTAINS() se usa para verificar si el elemento especificado está contenido en la matriz y devuelve un valor booleano (verdadero o falso). Se puede usar para operaciones de verificación y filtrado de miembros en arreglos.

Introducción a la función: la función ARRAY_CONTAINS(matriz, valor) acepta dos parámetros: una matriz y un valor. Comprueba si el valor especificado está contenido en la matriz y devuelve un resultado booleano.

Ejemplo de escenario empresarial:

  1. Coincidencia de etiquetas de usuario: suponga que hay una tabla de usuarios que contiene una identificación de usuario (user_id) y una lista de etiquetas para el usuario (etiquetas). La lista de etiquetas es una matriz que almacena los pasatiempos del usuario. Para encontrar usuarios con una etiqueta de interés específica, se puede usar la función ARRAY_CONTAINS() para hacer coincidir:
SELECT user_id
FROM users
WHERE ARRAY_CONTAINS(tags, 'sports');
  1. Selección de productos básicos: suponga que hay una tabla de productos que contiene un ID de producto (product_id) y una serie de industrias aplicables (industrias). Para filtrar productos adecuados para una industria específica, puede usar la función ARRAY_CONTAINS() para filtrar:
SELECT product_id
FROM products
WHERE ARRAY_CONTAINS(industries, 'technology');
  1. Estadísticas de agregación de matriz: suponga que hay una tabla de datos de ventas que contiene una matriz de ID de producto (product_id) y volumen de ventas (sales_amounts). Para contar la cantidad de ventas de cada producto, puede usar la función ARRAY_CONTAINS() para contar la cantidad de elementos de la matriz que cumplen la condición:
SELECT product_id, COUNT(*) AS sales_count
FROM sales_data
WHERE ARRAY_CONTAINS(sales_amounts, 0);

En estos ejemplos, la función ARRAY_CONTAINS() se usa para verificar la membresía en la matriz para cumplir con ciertas condiciones. Puede ayudar con operaciones como la coincidencia de etiquetas, el filtrado de matrices y la agregación de matrices, lo que respalda la consulta y el análisis de datos en varios escenarios comerciales.

Cabe señalar que la función ARRAY_CONTAINS() puede requerir métodos de uso más complejos para tipos de datos complejos en matrices, como estructuras o matrices anidadas. Cuando utilice esta función en un entorno y una herramienta específicos, consulte la documentación pertinente y la guía oficial para conocer el uso y el comportamiento exactos.

función de cifrado

md5 - Calcula el hash MD5 de una cadena

MD5()Función para calcular el valor hash MD5 de una cadena determinada. MD5 es un algoritmo hash de uso común que convierte los datos de entrada de cualquier longitud en un valor hash de longitud fija (generalmente 128 bits) que es teóricamente único

MD5()La función toma una cadena como entrada y devuelve el hash MD5 de esa cadena, representado como una cadena. Se puede usar para calcular el valor hash de las cadenas en Hive SQL y, a menudo, se usa en escenarios como el resumen de datos, la comparación de datos y el cifrado de datos.

Ejemplo de uso: supongamos que tenemos una cadena 'Hello, World!'y queremos calcular su hash MD5.

SELECT MD5('Hello, World!') AS hash_value;

En el ejemplo anterior, MD5('Hello, World!')la expresión 'Hello, World!'calcula el valor hash MD5 de la cadena y lo devuelve como una cadena. El resultado es similar '65a8e27d8879283831b664bd8b7f0ad4'.

Nota: MD5 es un algoritmo hash más antiguo y, aunque todavía se puede usar en algunos escenarios, se ha considerado inseguro. En aplicaciones prácticas, especialmente cuando se trata de datos confidenciales, se recomienda utilizar un algoritmo hash más potente y seguro como SHA-256. En Hive, SHA2()también se proporciona una función para calcular el valor hash SHA-2.

sha2 - Calcula el hash SHA-2 de una cadena

SHA2()La función se utiliza para calcular el valor hash SHA-2 (Secure Hash Algorithm 2) de la cadena dada. SHA-2 es un conjunto de funciones hash criptográficas que incluye diferentes variantes como SHA-224, SHA-256, SHA-384 y SHA-512. Estos algoritmos fueron diseñados por la Agencia de Seguridad Nacional (NSA) y se utilizan ampliamente en aplicaciones de criptografía y seguridad.

SHA2()La función acepta dos parámetros: la cadena que se va a codificar y el número de bits para el algoritmo de cifrado. El número de bits puede ser 256, 384 o 512, correspondientes a SHA-256, SHA-384 y SHA-512, respectivamente. Por ejemplo, SHA2('hello', 256)devolverá el hash SHA-256 de la cadena 'hola'.

SHA2()La siguiente es una consulta de ejemplo que demuestra cómo usar funciones en Hive :

SELECT SHA2('hello', 256);

producción:

185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

Este es el hash SHA-256 de la cadena 'hola'. Tenga en cuenta que el hash de salida es una cadena hexadecimal.

SHA2()Las funciones generalmente se usan en escenarios como seguridad de datos, resumen de datos y protección con contraseña en Hive. Por ejemplo, los hashes de datos confidenciales se pueden almacenar en tablas de Hive en lugar de datos de texto sin formato para una mayor seguridad.

SHA2()y MD5()son funciones utilizadas en Hive para calcular valores hash, pero existen algunas diferencias importantes entre ellas

  1. Algoritmo hash: SHA2()use la familia de algoritmos SHA-2 y MD5()use el algoritmo MD5. SHA-2 es un algoritmo hash más seguro y potente que MD5, ofrece diferentes variantes como SHA-256, SHA-384 y SHA-512, puede elegir diferentes números de bits según sus necesidades. Por el contrario, se ha demostrado que el algoritmo MD5 tiene algunos agujeros de seguridad y es vulnerable a los ataques de colisión.
  2. Longitud de salida: SHA2()la longitud de salida puede variar según la cantidad de bits elegidos, mientras que MD5()siempre produce un hash de 128 bits (16 bytes). SHA-256 produce un hash de 256 bits (32 bytes), SHA-384 produce 384 bits (48 bytes) y SHA-512 produce 512 bits (64 bytes). Las longitudes de salida más largas proporcionan una mayor seguridad.
  3. Probabilidad de colisión: Por las características del algoritmo MD5, su probabilidad de colisión es mayor que la del algoritmo SHA-2. Una colisión es cuando dos entradas diferentes producen el mismo hash. Aunque el algoritmo SHA-2 también puede colisionar, la probabilidad es mucho menor que la de MD5.
  4. Seguridad: el algoritmo SHA-2 proporciona mayor seguridad que el algoritmo MD5. El algoritmo MD5 se ha roto ampliamente y no es adecuado para almacenar hashes de datos confidenciales. El algoritmo SHA-2 se considera uno de los algoritmos hash más seguros y resistentes a colisiones.

En resumen, si los valores hash deben calcularse en Hive y la seguridad es una consideración clave, se recomienda usar SHA2()funciones, especialmente para elegir SHA-256 o bits superiores. Las funciones MD5()pueden ser útiles en algunas situaciones de validación simple o no sensibles a la seguridad.

cifrar - Cifrar una cadena

encrypt()La función se utiliza para cifrar la cadena dada. Cifra una cadena utilizando el algoritmo y la clave de cifrado especificados y devuelve el resultado cifrado. Esta función se puede utilizar para proteger datos confidenciales, como contraseñas u otra información confidencial.

encrypt()La sintaxis de la función es la siguiente:

encrypt(string input, string key);

Descripción de parámetros:

  • input: Cadena para cifrar.
  • key: La clave utilizada para el cifrado.

Nota: Las funciones de Hive encrypt()deben instalarse y habilitarse el complemento de cifrado de Hive para que funcione con normalidad. De forma predeterminada, Hive no proporciona funciones de cifrado y se requieren complementos y configuraciones adicionales para usar esta función.

Ejemplo usando encrypt()funciones:

SELECT encrypt('password123', 'mySecretKey') AS encrypted_password FROM my_table;

En el ejemplo anterior, la cadena "password123" se cifra con la clave "mySecretKey" y el resultado cifrado se devuelve como "encrypted_password".

Tenga en cuenta que los complementos de cifrado y los algoritmos de cifrado específicos dependen de la configuración de Hive y del entorno. Los algoritmos de cifrado comunes incluyen AES, DES, RSA, etc. El algoritmo específico utilizado depende de la configuración de Hive y la compatibilidad con los complementos.

función de conversión de tipo

cast - convierte una expresión al tipo de datos especificado

cast()Las funciones se utilizan para convertir el valor de una expresión o columna a un tipo de datos especificado. Proporciona la función de conversión de tipos, que puede convertir un tipo de datos en otro tipo de datos compatible.

cast()La sintaxis de la función es la siguiente:

CAST(expression AS data_type)

donde expressiones la expresión o columna que se va a convertir y data_typees el tipo de datos de destino al que se va a convertir.

Estos son algunos ejemplos comunes de conversión de tipos de datos:

-- 将字符串转换为整数
CAST('123' AS INT)

-- 将字符串转换为浮点数
CAST('3.14' AS DOUBLE)

-- 将整数转换为字符串
CAST(456 AS STRING)

-- 将日期字符串转换为日期类型
CAST('2023-01-01' AS DATE)

-- 将NULL值转换为字符串类型
cast(null as string) 

-- 将当前的时间戳(即当前日期和时间)转换为字符串格式
cast(current_timestamp() as string

Cabe señalar que cast()la función solo puede convertir tipos de datos compatibles. Si no es posible una conversión o si hay tipos de datos incompatibles, la conversión fallará y se generará un error.

En Hive SQL, cast()las funciones son muy útiles en la conversión de tipos de datos, la conversión de formatos de datos y la conversión de precisión de datos, y pueden convertir datos a un tipo adecuado para requisitos de cálculo o procesamiento específicos según sea necesario.

to_date - convierte una cadena a un formato de fecha

La función to_date se usa para convertir una cadena a un formato de fecha. Analiza la cadena dada en una fecha y devuelve el valor de fecha correspondiente.

Introducción a la función: la función to_date(string) acepta un parámetro de cadena y lo analiza en un formato de fecha. El parámetro de cadena debe ajustarse al formato de fecha admitido por Hive; de ​​lo contrario, se devolverá un valor NULL.

Ejemplos de escenarios de uso:

  1. Conversión de fecha de cadena: suponga que hay una tabla de datos que contiene un campo de fecha date_str, que almacena fechas en forma de cadena (como '2023-06-29'). Para el cálculo y análisis de fechas, las fechas de cadenas deben convertirse en tipos de fechas:
SELECT to_date(date_str) AS date
FROM table;
  1. Comparación y filtrado de fechas: supongamos que hay una tabla de pedidos que contiene el número de pedido (order_id) y la fecha del pedido (order_date). Para filtrar pedidos dentro de un rango de fechas específico, la función to_date se puede usar para convertir el parámetro de consulta a un formato de fecha y compararlo con la fecha del pedido:
SELECT order_id, order_date
FROM orders
WHERE to_date(order_date) BETWEEN to_date('2023-01-01') AND to_date('2023-06-30');
  1. Estadísticas de agregación de fechas: supongamos que hay una tabla de datos de ventas que contiene la fecha de ventas (sale_date) y el monto de las ventas (sale_amount). Para contar el monto de las ventas según la fecha, puede usar la función to_date para convertir la cadena de fecha en una fecha y realizar una operación de agregación:
SELECT to_date(sale_date) AS date, SUM(sale_amount) AS total_sales
FROM sales
GROUP BY to_date(sale_date);

En estos ejemplos, la función to_date se usa para convertir una fecha de cadena en un tipo de fecha para operaciones como la comparación de fechas, la agregación de fechas y el cálculo de fechas. Es útil cuando se trabaja con datos de fecha y facilita las consultas y análisis basados ​​en fechas.

Tenga en cuenta que la función to_date depende del formato de fecha de la cadena de entrada, por lo que debe asegurarse de que la cadena de entrada se ajuste al formato de fecha admitido por Hive.

to_unix_timestamp - Convierte una cadena de fecha u hora al formato de marca de tiempo UNIX

La función to_unix_timestamp se usa para convertir una cadena de fecha u hora al formato de marca de tiempo UNIX. Analiza la cadena de fecha u hora dada en una marca de tiempo UNIX y devuelve el valor entero correspondiente.

Introducción a la función: la función to_unix_timestamp(cadena) acepta un parámetro de cadena de fecha u hora y lo analiza en formato de marca de tiempo UNIX. El parámetro de cadena debe ajustarse al formato de fecha u hora admitido por Hive; de ​​lo contrario, se devolverá un valor NULL. Una marca de tiempo UNIX es el número de segundos transcurridos desde el 1 de enero de 1970 00:00:00 UTC.

Ejemplos de escenarios de uso:

  1. Comparación y filtrado de tiempo: supongamos que hay una tabla de registro que contiene un campo de marca de tiempo de registro (log_timestamp). Para filtrar los registros dentro de un rango de tiempo específico, puede usar la función to_unix_timestamp para convertir el parámetro de consulta en una marca de tiempo UNIX y compararlo con la marca de tiempo del registro:
SELECT log_id, log_timestamp
FROM logs
WHERE to_unix_timestamp(log_timestamp) BETWEEN to_unix_timestamp('2023-06-29 00:00:00') AND to_unix_timestamp('2023-06-30 23:59:59');
  1. Cálculo y conversión de tiempo: supongamos que hay una tabla de tareas que contiene la hora de inicio de la tarea (start_time) y la duración de la ejecución de la tarea (duración, en segundos). Para calcular la hora de finalización de la tarea, puede utilizar la función to_unix_timestamp para convertir la hora de inicio en una marca de tiempo UNIX y combinarla con la hora de ejecución de la tarea para el cálculo:
SELECT task_id, start_time, duration,
    from_unixtime(to_unix_timestamp(start_time) + duration) AS end_time
FROM tasks;
  1. Conversión de formato de marca de tiempo: suponga que hay una tabla de datos que contiene un campo de fecha (date_str) que almacena fechas en forma de cadena (como '2023-06-29'). Para convertir un campo de fecha en una marca de tiempo UNIX y usarlo en cálculos y procesamientos posteriores, puede usar la función to_unix_timestamp para la conversión:
SELECT date_str, to_unix_timestamp(date_str) AS unix_timestamp
FROM table;

En estos ejemplos, la función to_unix_timestamp se usa para convertir una cadena de fecha u hora en una marca de tiempo UNIX para comparación de tiempo, cálculo de tiempo y conversión de formato de tiempo. Es muy útil cuando se trabaja con datos temporales y se realizan cálculos relacionados con el tiempo.

Tenga en cuenta que la función to_unix_timestamp depende del formato de fecha u hora de la cadena de entrada, por lo que debe asegurarse de que la cadena de entrada se ajuste al formato de fecha u hora admitido por Hive.

from_unixtime - Convierte una marca de tiempo UNIX a un formato de cadena de fecha u hora

La función from_unixtime se utiliza para convertir una marca de tiempo UNIX en un formato de cadena de fecha o de hora. Analiza la marca de tiempo UNIX dada en una cadena de fecha u hora y devuelve el valor de cadena correspondiente.

Introducción a la función: la función from_unixtime(unix_timestamp[, format]) acepta un parámetro de marca de tiempo de UNIX y lo convierte en una cadena de fecha u hora. Puede especificar un parámetro de formato opcional que define el formato de la cadena de salida. Si no se proporciona ningún parámetro de formato, se utiliza el formato "yyyy-MM-dd HH:mm:ss" de forma predeterminada.

Ejemplos de escenarios de uso:

  1. Conversión de marca de tiempo UNIX: supongamos que hay una tabla de datos que contiene un campo de marca de tiempo UNIX (unix_timestamp). Para convertir una marca de tiempo UNIX a un formato legible de fecha y hora, se puede usar la función from_unixtime para la conversión:
SELECT unix_timestamp, from_unixtime(unix_timestamp) AS datetime
FROM table;
  1. Personalización del formato de fecha: supongamos que hay una tabla de pedidos que contiene la fecha del pedido (order_date). Para generar la fecha del pedido en un formato personalizado, puede usar la función from_unixtime y especificar el parámetro de formato:
SELECT order_id, from_unixtime(order_date, 'yyyy/MM/dd') AS formatted_date
FROM orders;
  1. Conversión de marca de tiempo: supongamos que hay una tabla de registro que contiene un campo de marca de tiempo de registro (log_timestamp). Para convertir las marcas de tiempo de registro a un formato de tiempo específico, use la función from_unixtime y especifique el parámetro de formato:
SELECT log_id, from_unixtime(log_timestamp, 'HH:mm:ss') AS log_time
FROM logs;

En estos ejemplos, la función from_unixtime se usa para convertir una marca de tiempo de UNIX en una cadena de fecha u hora para la personalización del formato de hora, la conversión de marcas de tiempo y la salida legible por humanos. Es útil en el manejo de marcas de tiempo UNIX y conversiones de formato de fecha/hora.

Cabe señalar que la función from_unixtime devuelve un tipo de cadena, por lo que se deben realizar cálculos, comparaciones o procesamiento de formato posteriores según sea necesario durante el uso.

función matemática

mayor - devuelve el mayor valor

GREATEST()La función se utiliza para devolver el valor más grande de un conjunto de valores dado. Acepta múltiples parámetros y devuelve el máximo de esos parámetros.

gramática:

GREATEST(value1, value2, ...)

parámetro:

  • value1, value2, ...: El valor a comparar, que puede ser un número, una cadena o un tipo de fecha.

valor de retorno:

  • Devuelve el valor máximo entre los argumentos.

Precauciones:

  • Si el parámetro contiene un valor NULL, el resultado devuelto es NULL.
  • GREATEST()Cuando una función compara parámetros de diferentes tipos, convertirá y comparará de acuerdo con las reglas de comparación de los tipos.

Ejemplo:

SELECT GREATEST(5, 10, 3, 8); -- 返回 10
SELECT GREATEST('apple', 'banana', 'orange'); -- 返回 'orange'
SELECT GREATEST(date '2021-01-01', date '2022-03-15', date '2020-12-25'); -- 返回 '2022-03-15'

piso: devuelve el entero más grande que no sea mayor que el número dado (redondeado hacia abajo)

La función de piso se usa para devolver el entero más grande que no sea mayor que el número dado. Redondea hacia abajo el argumento numérico dado y devuelve el valor entero más cercano que no sea mayor que ese número.

Introducción a la función: la función floor(x) acepta un parámetro numérico x y devuelve el valor entero más grande que no sea mayor que x. Si x es positivo, devuelve el entero mayor menor o igual que x; si x es negativo, devuelve el entero mayor mayor o igual que x.

Ejemplos de escenarios de uso:

  1. Redondeo de valores: supongamos que hay una tabla de ventas que contiene el monto total (total_amount) del pedido de ventas. Para contar la parte entera del monto del pedido, puede usar la función de piso para redondear el monto total:
SELECT order_id, total_amount, floor(total_amount) AS rounded_amount
FROM sales;
  1. Ajuste de precios: supongamos que hay una tabla de productos, que contiene los precios de los productos (precio). Para fines de ajuste de precios, el precio se redondea al valor entero inferior más cercano y se procesa como el precio ajustado:
SELECT product_id, price, floor(price) AS adjusted_price
FROM products;
  1. Conversión de marca de tiempo: supongamos que hay una tabla de registro que contiene un campo de marca de tiempo de registro (log_timestamp). Para redondear las marcas de tiempo de los registros al nivel de minutos, y para agrupar y agregar registros, puede usar la función Floor:
SELECT floor(log_timestamp/60)*60 AS minute_timestamp, COUNT(*) AS count
FROM logs
GROUP BY floor(log_timestamp/60)*60;

En estos ejemplos, la función de piso se usa para redondear hacia abajo valores numéricos o marcas de tiempo para operaciones de manipulación numérica, ajuste de precios, conversión de marcas de tiempo y agregación. Es muy útil cuando se trabaja con datos numéricos y temporales y se puede utilizar para procesamiento de datos y cálculos en varios escenarios comerciales.

Cabe señalar que el resultado devuelto por la función de piso es de tipo entero, que se puede calcular y comparar con otros valores

funcion logica

caso cuando - implementar juicio condicional y lógica de bifurcación

CASE WHENLas declaraciones se utilizan para realizar diferentes acciones o devolver diferentes valores según las condiciones. Es similar a las declaraciones condicionales (como las declaraciones if-else) en otros lenguajes de programación.

CASE WHENLa sintaxis general de la sentencia es la siguiente:

CASE WHEN condition1 THEN result1
     WHEN condition2 THEN result2
     ...
     ELSE resultN
END
  • condition1, condition2, … son las expresiones condicionales a evaluar.
  • result1, result2, ... son las expresiones de resultado que se devolverán cuando se cumplan las condiciones correspondientes.
  • ELSE resultNes opcional y se usa para especificar una expresión de resultado predeterminada para devolver cuando no se cumplen todas las condiciones.

Precauciones:

  • CASE WHENLas declaraciones evalúan las condiciones secuencialmente y, una vez que se cumple una condición, se devuelve el resultado correspondiente y las condiciones posteriores no se vuelven a evaluar.
  • WHENSe pueden usar varias cláusulas para establecer diferentes condiciones y resultados según sea necesario.
  • Si ninguna cláusula satisface la condición y no ELSEse proporciona ninguna cláusula, CASE WHENla instrucción devolverá NULL.

El siguiente es un ejemplo que muestra cómo usar la declaración en Hive SQL CASE WHEN:

SELECT column1, column2,
       CASE WHEN column1 > 10 THEN 'Large'
            WHEN column1 > 5 THEN 'Medium'
            ELSE 'Small'
       END AS size
FROM table;

En el ejemplo anterior, según column1el valor de , sizese devuelven diferentes valores en función de diferentes condiciones. column1Devuelve si es mayor que 10 'Large'; devuelve si es mayor de 5 pero menor o igual que 10 'Medium'; de lo contrario, devuelve 'Small'.

como si

WITH ASse utiliza para crear una tabla temporal o una subconsulta y asignarle un alias. Esta tabla temporal o subconsulta se puede utilizar en consultas posteriores.

WITH ASLa sintaxis de la sentencia es la siguiente:

WITH tmp AS (
    -- 子查询或临时表定义
)

El uso WITH tmp ASde la declaración puede mejorar la legibilidad y la reutilización de la consulta, especialmente cuando la consulta debe hacer referencia al mismo resultado de la subconsulta varias veces. Evita escribir la misma subconsulta repetidamente y simplifica la estructura de la declaración de consulta.

Las tablas temporales creadas con WITHcláusulas se reciclan automáticamente y no se requieren operaciones de reciclaje manual.

La vida útil de una tabla temporal está ligada al ciclo de ejecución de una consulta. Cuando se ejecuta la consulta, la tabla temporal se eliminará automáticamente y se liberarán los recursos ocupados por ella. Esto significa que las tablas temporales son visibles en el contexto de la consulta actual, pero ya no existirán una vez que finalice la consulta.

Esta función de reciclaje automático hace que la gestión de tablas temporales sea más cómoda, sin necesidad de eliminar o liberar recursos manualmente. Las tablas temporales se recrean cada vez que se ejecuta una consulta, lo que garantiza la independencia y el aislamiento de la consulta.

Cabe señalar que las tablas temporales solo son válidas en la sesión actual y no son visibles para otras sesiones o consultas ejecutadas en paralelo. Si necesita compartir tablas temporales entre varias consultas, considere usar tablas temporales globales o tablas permanentes.

si

En Hive SQL, IFes una expresión condicional utilizada para elegir realizar diferentes operaciones según el resultado de la condición.

La sintaxis es la siguiente:

IF(condition, value_if_true, value_if_false)

en:

  • conditiones una expresión booleana que especifica una condición.
  • value_if_truees el valor o la expresión que se devolverá si la condición es verdadera.
  • value_if_falsees el valor o expresión a devolver si la condición es falsa.

Ejemplo de uso:

SELECT IF(salary > 5000, 'High', 'Low') AS salary_category
FROM employees;

En el ejemplo anterior, según salaryel valor de , si el salario es superior a 5000, devuelve 'High', de lo contrario, devuelve'Low'

seleccione "1" como xxx de la tabla

Por lo general, se usa para agregar temporalmente una columna auxiliar para distinguir diferentes fuentes, y una cadena de valor constante se usa delante como

Por ejemplo:

select id,"1" as source from code_table_1
union all
select id,"2" as source from code_table_2

En este código de muestra, '1' y '2' se utilizan como identificadores de origen. Son una columna de ayuda que se utiliza para diferenciar la fuente de datos para code_table_1 y code_table_2

  1. En la primera declaración SELECT '1' as sourceindica que la fila proviene de la tabla code_table_1y establece el indicador de origen en '1', alias fuente
  2. En la segunda instrucción SELECT, '2' as sourceindica que la fila proviene de la tabla code_table_2y establece la ID de fuente en '2', fuente de alias

'1' y '2' solo se usan como identificadores auxiliares en este código, que se usan para distinguir las fuentes de datos y ayudar a consultar y filtrar las prioridades de configuración, y no tienen ningún otro significado especial.

Ejemplo de uso:

SELECT `code`, name
FROM (
	SELECT `code`, name, row_number() OVER (PARTITION BY name ORDER BY source DESC) AS rn
	FROM (
		SELECT `code`, name, '1' AS source
		FROM n000_code_cb18
		UNION ALL
		SELECT `code`, name, '2' AS source
		FROM n000_code_cb18_new
		WHERE rn = 1
	) a
) aa
WHERE aa.rn = 1;

En la parte de subconsulta de la consulta, las dos declaraciones SELECT son de tablas diferentes:

  1. La primera instrucción SELECT '1' as sourceindica que la fila es de la tabla n000_code_cb18y establece el indicador de origen en '1'.
  2. El en la segunda declaración SELECT '2' as sourceindica que la fila es de la tabla n000_code_cb18_newy establece la ID de origen en '2'.

El propósito de esto es fusionar la unión de datos de las dos tablas, ordenar y particionar según el valor del identificador de origen, de modo que en la función ROW_NUMBER() subsiguiente, se seleccione la fila con la prioridad más alta en cada partición según a las reglas especificadas.

En la parte final de la consulta, where aa.rn=1la condición dice seleccionar solo la fila con un número de fila (rn) de 1, es decir, la fila con la prioridad más alta en cada partición

Supongo que te gusta

Origin blog.csdn.net/wt334502157/article/details/131460277
Recomendado
Clasificación