Funções e sintaxe comumente usadas no Hive e exemplos de cenários de negócios

Funções e sintaxe comumente usadas no Hive e exemplos de cenários de negócios

função agregada

collect_list - coleta os valores das colunas em um array

collect_listA função é usada para coletar os valores da coluna especificada em uma matriz e retornar a matriz como resultado. Geralmente é GROUP BYusado em cláusulas para coletar valores da mesma chave em uma matriz para operações agregadas

Segue collect_lista sintaxe da função:

collect_list(column)

onde columné o nome da coluna ou expressão a ser coletada.

collect_listA função coleta os valores da coluna especificada em um array e retorna o array resultante. Por exemplo, se você deseja categoryagrupar uma tabela por colunas e productcoletar os valores das colunas de cada grupo em um array, pode utilizar a seguinte consulta:

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

Essa consulta irá categoryagrupar por coluna e para cada grupo criar um array productscontendo todos productos valores daquele grupo.

Precauções:

  • collect_listA função retorna um array, que pode conter valores repetidos.
  • Se você deseja remover valores duplicados em uma matriz, pode usar collect_setuma função.
  • As funções no Hive collect_listexigem que todos os valores a serem coletados caibam na memória, portanto, é preciso ficar atento às restrições de memória ao lidar com grandes volumes de dados. Se a quantidade de dados for muito grande, talvez seja necessário considerar outras formas de realizar operações de agregação.

Uso de exemplo de função:

Suponha que haja uma orderstabela nomeada com as seguintes colunas: order_id(ID do pedido), customer_id(ID do cliente) e product(Nome do produto).

+----------+-------------+-------------------+
| 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 e coletar os itens em cada grupo productem uma matriz, você pode usar a seguinte consulta:

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

Os resultados da consulta ficarão assim:

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

Para cada customer_idagrupamento, collect_lista função coleta os valores desse agrupamento productem uma matriz e retorna a matriz como resultado.

size - Retorna o número de array ou elementos do mapa

A função SIZE() é usada para retornar o tamanho (número de elementos) de um array ou Map. Pode ser usado para contar o número de elementos em uma coluna de tipos de coleção, como matrizes e mapas

A função SIZE() é usada principalmente para calcular o tamanho dos tipos de coleção (arrays e mapas) e fornece estatísticas e recursos de análise para o número de elementos da coleção

Introdução da função: A função SIZE(coleção) aceita um parâmetro de tipo de coleção (matriz ou mapa) e retorna o número de elementos na coleção.

Exemplo: Suponha que você tenha uma tabela employeesque contenha um ID de funcionário (employee_id) e um array de habilidades (skills). Para calcular o número de habilidades que cada funcionário possui, use a função SIZE():

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

Isso retornará um conjunto de resultados contendo IDs de funcionários e o número de habilidades que eles possuem. A função SIZE() calculará o tamanho de cada array e num_skillso retornará como o valor da coluna.

Além disso, a função SIZE() também pode ser usada para calcular o número de pares chave-valor no mapa. Suponha que haja uma tabela product_salesque contenha um mapa de IDs de produto (product_id) e vendas (sales_by_month). Para calcular o número de meses de vendas de cada produto, pode-se usar a função SIZE():

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

Isso retornará um conjunto de resultados com o ID do produto e a quantidade do mês de venda. A função SIZE() contará o número de pares chave-valor em cada mapa e num_monthso retornará como o valor da coluna.

A função SIZE() é uma das funções comuns usadas para calcular o tamanho dos tipos de coleção (matriz e mapa) no Hive. Ele pode nos ajudar a realizar estatísticas e análises do número de elementos na coleção, de modo a obter informações sobre a estrutura e as características dos dados.

Exemplo de cenário de negócios:

  1. Análise de mídia social: suponha que haja uma tabela de usuários de uma plataforma de mídia social, que contém um ID de usuário (user_id) e uma lista de amigos do usuário (amigos). A lista de amigos é uma matriz que armazena IDs de amigos. Para analisar a distribuição do número de amigos para cada usuário, o tamanho da lista de amigos pode ser calculado usando a função SIZE():
SELECT user_id, SIZE(friends) AS num_friends
FROM user_friends;
  1. Análise da cesta de compras: Suponha que exista uma tabela de pedidos de uma plataforma de comércio eletrônico, que contém um ID do pedido (order_id) e uma lista de produtos (itens). A lista de produtos é uma matriz contendo vários IDs de produtos, representando vários produtos adquiridos em um pedido. Para analisar o número de itens comprados em cada pedido, o tamanho da lista de itens pode ser calculado usando a função SIZE():
SELECT order_id, SIZE(items) AS num_items
FROM orders;
  1. Análise de log: suponha que haja uma tabela de log, que contém informações de log de usuários que visitam páginas da web, incluindo ID do usuário (user_id) e lista de páginas visitadas (pages). A lista de páginas é uma matriz que armazena os URLs das páginas. Para analisar a distribuição do número de páginas visitadas por cada usuário, o tamanho da lista de páginas pode ser calculado usando a função SIZE():
SELECT user_id, SIZE(pages) AS num_pages
FROM user_logs;

length - retorna o comprimento da string

length()Função usada para retornar o comprimento (número de caracteres) de uma string. Ele pega uma string como argumento e retorna o número de caracteres nessa string

Exemplo de como usar a função:

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

Resultado de saída:

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

No exemplo acima, length('Hello, World!')é retornado o número de caracteres da string 'Hello, World!', que é 13.

A função LENGTH() é usada principalmente para calcular o comprimento do tipo string, que pode ser usada para verificar o limite de comprimento da string, executar interceptação de string e outras operações

Para strings, a função LENGTH() retorna o número de caracteres na string (incluindo espaços e caracteres especiais)

função janela

lag - obtém o valor da linha anterior à linha atual no conjunto de resultados

A função LAG() é usada para obter o valor da linha anterior à linha atual no conjunto de resultados. Ele pode ser usado para executar operações de função de janela, dando a cada linha o valor da linha anterior.

Introdução da função: A função LAG(expression, offset, default_value) retorna o valor da linha antes do deslocamento especificado da linha atual. Se não houver linha anterior (por exemplo, a linha atual é a primeira linha), retorna o valor padrão especificado. Geralmente é usado com a cláusula OVER e a cláusula ORDER BY.

Exemplo de cenário de negócios:

  1. Cálculo da taxa de crescimento das vendas: suponha que haja uma tabela de dados de vendas, que contém as vendas mensais (sales_amount). Para calcular a taxa de crescimento das vendas de cada mês, você pode usar a função LAG() para obter as vendas do mês anterior e calcular a taxa de crescimento:
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álise do comportamento do usuário: suponha que haja uma tabela de log do usuário, que contém o ID do usuário (user_id) e o horário de login (login_time). Para analisar o tempo de intervalo de login do usuário, você pode usar a função LAG() para obter o tempo do último login e calcular o tempo 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 alterações de estoque: suponha que haja uma tabela de transações de estoque que contenha ID do produto (product_id), data da transação (transaction_date) e quantidade da transação (transaction_quantity). Para calcular a variação de estoque para cada transação, você pode usar a função LAG() para obter a quantidade da última transação e calcular a variação:
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;

Nesses exemplos, a função LAG() é usada para obter o valor da linha anterior no conjunto de resultados para cálculos ou análises relacionados. Dessa forma, ele pode lidar facilmente com séries temporais, comparação de linhas de dados anteriores e subsequentes, etc., e ajudar na análise e insight de dados mais profundos. Dependendo das necessidades comerciais específicas, você pode combinar outras funções e cláusulas para criar consultas analíticas complexas.

lead - obtém o valor da linha após a linha atual no conjunto de resultados

A função LEAD() é usada para obter o valor da linha seguinte à linha atual no conjunto de resultados. Ele pode ser usado para executar operações de função de janela, fornecendo a cada linha o valor da próxima linha.

Introdução da função: A função LEAD(expressão, deslocamento, valor_padrão) retorna o valor da linha após o deslocamento especificado da linha atual. Se não houver linhas seguintes (por exemplo, a linha atual é a última linha), o valor padrão especificado é retornado. Geralmente é usado com a cláusula OVER e a cláusula ORDER BY.

Exemplo de cenário de negócios:

  1. Análise de dados periódicos: Suponha que haja uma tabela de dados de vendas, que contém ID do produto (product_id), data de vendas (sale_date) e volume de vendas (sales_quantity). Para calcular a taxa de crescimento de vendas de cada produto, você pode usar a função LEAD() para obter o volume de vendas do dia seguinte e calcular a taxa de crescimento:
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álise de atividade do usuário: suponha que haja uma tabela de atividade do usuário, que contém o ID do usuário (user_id) e a data ativa (active_date). Para analisar o número de dias ativos consecutivos de cada usuário, você pode usar a função LEAD() para obter a data ativa do dia seguinte e calcular o número de dias ativos 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álise de dados de ações: Suponha que haja uma tabela de dados de transações de ações, que contém o código da ação (stock_code), a data da transação (trade_date) e o preço de fechamento (closing_price). Para calcular a alta e a queda de cada ação, você pode usar a função LEAD() para obter o preço de fechamento do dia seguinte e calcular a alta e a queda:
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;

Nesses exemplos, a função LEAD() é usada para obter o valor da próxima linha no conjunto de resultados para cálculos ou análises relacionados. Isso torna mais fácil lidar com séries temporais, comparação de dados de linha de frente e de trás, etc.

row_number - retorna o número da linha no conjunto de resultados

row_number()é uma função de janela que atribui um número de sequência exclusivo a cada linha no conjunto de resultados da consulta. Geralmente é usado para atribuir um número de série a cada linha depois de classificar ou agrupar os resultados da consulta para posterior processamento ou filtragem de dados.

row_number()A sintaxe da função é a seguinte:

row_number() over ([partition by col1, col2, ...] order by col3, col4, ...)
  • partition byA cláusula é opcional e é usada para especificar as colunas pelas quais agrupar. row_number()Se for especificada uma coluna de agrupamento, o número de sequência será calculado independentemente dentro de cada grupo , ou seja, o número de sequência da primeira linha de cada grupo é 1.
  • order byA cláusula é usada para especificar as colunas a serem classificadas. Os resultados da consulta serão classificados de acordo com a ordem de coluna especificada.

Aqui está um exemplo mostrando como usar row_number()a função:

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

No exemplo acima, row_number()a função ordena pelos col3valores da coluna e atribui a cada linha um número ordinal, que é armazenado em uma row_numnova coluna chamada .

função condicional

ifnull - retorna o valor da segunda expressão se a primeira expressão for nula, caso contrário, retorna o valor da primeira expressão

A função IFNULL() é usada para substituir valores NULL por um valor padrão especificado. Ele aceita dois argumentos: a expressão a ser verificada e um valor padrão. Se o valor da expressão for NULL, a função IFNULL() retornará o valor padrão; caso contrário, retornará o valor da expressão.

Introdução da função: A função IFNULL(expression, default_value) é usada para lidar com valores NULL. Quando o valor da expressão é NULL, o valor padrão especificado é retornado para garantir que o conjunto de resultados não contenha valores NULL.

Exemplo de cenário de negócios:

  1. Calcule a classificação média: suponha que haja uma tabela de classificação do filme, que contém o ID do filme (movie_id) e a classificação (rating). Em alguns casos, a coluna de pontuação pode conter valores NULL. Para calcular a classificação média de um filme, você pode usar a função IFNULL() para substituir os valores NULL por 0 e calcular a média:
SELECT movie_id, AVG(IFNULL(rating, 0)) AS avg_rating
FROM movie_ratings
GROUP BY movie_id;
  1. Ajustar o nível de vendas: suponha que haja uma tabela de pedidos de vendas, que contém o ID do cliente (customer_id) e o valor do pedido (order_amount). Em alguns casos, o valor do pedido pode ser NULL. Para análise de medidas de vendas, a função IFNULL() pode ser usada para substituir os valores NULL por 0 e calcular a medida de vendas ajustada:
SELECT customer_id, IFNULL(order_amount, 0) AS adjusted_amount
FROM sales_orders;
  1. Contando o número de valores nulos: Na análise de qualidade de dados, contar o número de valores nulos em uma coluna é um requisito comum. Suponha que haja uma tabela de usuários que contenha o ID do usuário (user_id) e o endereço de e-mail (email). Para contar o número de valores nulos, você pode usar a função IFNULL() para substituir o valor NULL por 1 e contar a soma dos valores substituídos:
SELECT SUM(IFNULL(email, 1)) AS null_count
FROM users;

Nestes exemplos, a função IFNULL() é utilizada para tratar valores NULL, substituindo-os por valores padrão ou resultados de cálculos específicos. Isso garante que os valores NULL não sejam incluídos no conjunto de resultados ao fazer cálculos agregados, análise de dados ou verificações de qualidade de dados e fornece uma maneira de lidar com dados ausentes ou inválidos. De acordo com requisitos de negócios específicos, a função IFNULL() pode ser aplicada de forma flexível para atender a diferentes requisitos de processamento de dados.

nvl - retorna o valor da segunda expressão se a primeira expressão estiver vazia, caso contrário, retorna o valor da primeira expressão

NVL()As funções são usadas para lidar com o caso de valores NULL. Aceita dois parâmetros: o primeiro parâmetro é a expressão ou coluna a verificar e o segundo parâmetro é o valor de substituição. Se o primeiro parâmetro estiver vazio (NULL), retorna o segundo parâmetro como um valor substituto; caso contrário, retorna o valor do primeiro parâmetro.

Veja a seguir NVL()um exemplo da sintaxe de uma função:

NVL(expression, substitute_value)
  • expression: A expressão ou coluna a ser verificada e, se NULL, um valor alternativo é retornado.
  • substitute_value: Um valor substituto, que é retornado se a expressão estiver vazia.

NVL()Aqui está um exemplo de consulta que demonstra como usar funções no Hive :

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

No exemplo acima, personshá duas colunas na tabela: namee age. Se agea coluna estiver vazia, 0 será usado como valor alternativo. Os resultados da consulta retornarão namecoluna e agecoluna (se não estiverem vazios) ou um valor alternativo de 0 (se estiver vazio).

NVL()As funções são úteis para lidar com valores nulos, permitindo que valores alternativos sejam especificados em consultas para evitar valores nulos potencialmente problemáticos.

coalesce - retorna o primeiro valor de expressão não nula na lista de argumentos

COALESCE()A função é usada para retornar o primeiro valor não vazio (não NULL) de um conjunto de expressões. Ele aceita vários parâmetros e os verifica um a um na ordem, retornando o primeiro valor não nulo. Retorna NULL se todos os parâmetros estiverem vazios

Sintaxe de uso da função:

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

Descrição do parâmetro:

  • expr1, expr2, expr3, ...: Lista de expressões a verificar.

Ao usar COALESCE()a função, o Hive verifica os argumentos um a um da esquerda para a direita, retornando o primeiro valor não nulo. Retorna NULL se todos os argumentos forem nulos.

Exemplo de uso: Suponha que temos uma tabela my_tablecom duas colunas col1e col2queremos obter o primeiro valor não nulo nessas duas colunas.

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

No exemplo acima, COALESCE(col1, col2)a expressão primeiro verificará col1o valor de e retornará o valor se não estiver vazia col1; se col1estiver vazia, continue verificando col2o valor de e retorne. Por fim, criamos AS resultum alias para o resultado via , que é chamado result.

COALESCE()As funções são úteis para trabalhar com colunas ou variáveis ​​que podem ser nulas. Ele garante que sempre haja um valor não nulo ao processar expressões, evitando assim valores NULL.

Específico para o uso no código:

coalesce(`eid`,'')

O significado da função é eidselecionar um valor não nulo entre a coluna e a string vazia como resultado. Se eido valor da coluna não estiver vazio, retorna eido valor da coluna; se eido valor da coluna estiver vazio, retorna uma string vazia

funções de string

split - divide a string pelo delimitador especificado

SPLIT()A função é usada para dividir uma string de acordo com o delimitador especificado e retornar uma matriz de strings. A função aceita dois parâmetros: a string a ser dividida e o delimitador

A sintaxe da função é a seguinte:

SPLIT(str, delimiter)

Descrição do parâmetro:

  • str: A string a ser dividida.
  • delimiter: Delimitador, usado para especificar onde dividir a string.

Valor de retorno: SPLIT()A função retorna uma matriz de string contendo as substrings divididas pelo delimitador especificado.

Exemplo de uso:

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

Resultado de saída:

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

No exemplo acima, SPLIT()a função divide a string 'Hello,World,How,Are,You'em vírgulas ,e retorna um array de strings ["Hello", "World", "How", "Are", "You"]. Cada seção separada por vírgula torna-se um elemento da matriz. Observe que o resultado retornado é um array de strings, com cada elemento entre aspas duplas.

Específico para o uso no código:

split(`hisentname`,';')

Divida hisentnameo valor no campo usando;

concat - concatena duas ou mais strings

CONCAT()As funções são usadas para concatenar várias strings em uma string. Leva duas ou mais strings como parâmetros e retorna o resultado da concatenação dessas strings

Uso de exemplo de função:

Suponha que temos duas strings 'Hello'e 'World', e queremos concatená-las em uma string 'Hello World'.

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

No exemplo acima, CONCAT('Hello', ' ', 'World')a expressão concatena 'Hello', space e 'World'essas três strings para obter 'Hello World'.

CONCAT()As funções podem aceitar vários parâmetros, que podem ser constantes de string, nomes de coluna ou outras expressões. Ele concatena os argumentos em uma única string na ordem em que aparecem na função. Se houver um valor NULL no parâmetro, o parâmetro será ignorado e não afetará o resultado da conexão.

Exemplo de uso: Suponha que temos uma tabela my_tablecom duas colunas e queremos concatená-las first_nameem last_nameum nome completo.

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

No exemplo acima, CONCAT(first_name, ' ', last_name)a expressão concatena first_nameo valor da coluna, um caractere de espaço e last_nameo valor da coluna para obter o nome completo. AS full_nameO resultado recebe um alias por , o alias é full_name.

Nota: No Hive SQL, CONCAT()o número de parâmetros que uma função pode aceitar é limitado (geralmente 256).Se você precisar concatenar um grande número de strings, pode ser necessário dividi-los em várias CONCAT()chamadas de função.

trim - remove espaços de ambas as extremidades de uma string

TRIM()Função para remover espaços ou caracteres especificados do início e do fim de uma string.

A sintaxe da função é a seguinte:

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

Descrição do parâmetro:

  • BOTH: remove os caracteres do início e do fim da string, também usados ​​por padrão BOTH.
  • LEADING: remova apenas os caracteres no início da string.
  • TRAILING: remova apenas os caracteres no final da string.
  • trim_character: O caractere ou string a ser removido, o padrão é remover os caracteres de espaço.
  • input_string: A string a ser processada.

Exemplo:

SELECT TRIM('   Hello World   ') AS trimmed_string;

Resultado de saída:Hello World

No exemplo acima, TRIM()a função remove ' Hello World 'os espaços em branco do início e do fim da string e retorna a string processada'Hello World'

Específico para o uso no código:

trim(`entname`)

entnameRemova os caracteres de espaço em branco iniciais e finais dos campos

regexp - verifica se uma string corresponde a uma expressão regular especificada

regexpFunção usada para verificar se uma string corresponde a um padrão de expressão regular especificado

A sintaxe da função é a seguinte:

regexp(string, pattern)
  • string: a string a ser correspondida.
  • pattern: modo de expressão regular, usado para especificar regras de correspondência.

A função retorna um valor booleano se a string fornecida corresponder ao padrão de expressão regular, caso contrário, ela trueretorna false.

aqui estão alguns exemplos:

  1. Verifica se uma string corresponde a um padrão de expressão regular especificado:
SELECT regexp('hello', '^h.*');

saída:true

Neste exemplo, a string fornecida é "hello" e o padrão de expressão regular é "^h.*", que representa qualquer string começando com a letra "h". Como a string "hello" começa com "h", ela corresponde com sucesso e retorna true.

  1. Use funções em consultas regexppara filtrar dados:
SELECT column_name
FROM table_name
WHERE regexp(column_name, '[0-9]+');

[0-9]+Esta instrução selecionará linhas de dados em uma coluna de uma tabela que corresponda a um padrão de expressão regular . Esse padrão representa uma sequência de um ou mais dígitos. Somente as linhas correspondentes ao padrão serão retornadas.

Nota: No Hive SQL, os padrões de expressão regular são baseados na sintaxe de expressão regular do Java. Portanto, você pode usar as regras de sintaxe das expressões regulares Java para construir padrões.

Específico para o uso no 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, se credit_codeo valor da coluna corresponder ao padrão de expressão regular 0{18}(ou seja, 18 0s consecutivos), retorne NULL.
  2. else upper(regexp_replace(credit_code ,'\\s',''))indica que se credit_codeo valor da coluna não corresponder ao padrão de expressão regular 0{18}, credit_codeo valor da coluna será processado como superior.
  • regexp_replace(credit_code ,'\\s','')Substitui credit_codecaracteres de espaço na coluna por strings vazias. \sé a representação de um caractere de espaço em uma expressão regular.
  • upper(...)Converta o valor processado credit_codepara letras maiúsculas.

Finalmente, dependendo da condição, uscc_codeo valor da coluna pode ser NULL (ao credit_codecorresponder a 18 0s consecutivos) ou uma cadeia de letras maiúsculas processada (quando credit_codenão corresponder a 18 0s consecutivos).

regexp_replace - Substitua correspondências em uma string por uma expressão regular

regexp_replace()Função para substituir partes de uma string que correspondem a uma expressão regular

A sintaxe da função é a seguinte:

regexp_replace(string, pattern, replacement)
  • string: A string a ser substituída.
  • pattern: O padrão de expressão regular a ser correspondido.
  • replacement: Substitua a parte correspondente da string.

Essa função pesquisará a string fornecida em busca de partes que correspondam ao padrão de expressão regular e as substituirá pela string de substituição. Se nenhuma parte correspondente for encontrada, a string original será retornada.

aqui estão alguns exemplos:

  1. Substitua os números em uma string por caracteres específicos:
SELECT regexp_replace('Hello123World456', '[0-9]', '*');

saída:Hello***World***

  1. Remover espaços de uma string:
SELECT regexp_replace('Hello World', '\\s', '');

saída:HelloWorld

  1. Substitua todas as vírgulas em uma string por ponto e vírgula:
SELECT regexp_replace('a,b,c,d', ',', ';');

saída:a;b;c;d

  1. Use uma string vazia para remover um padrão específico em uma string:
SELECT regexp_replace('abc123def456', '[a-z]', '');

saída:123456

Nota: No Hive SQL, a sintaxe das expressões regulares pode ser um pouco diferente e precisa ser ajustada de acordo com requisitos específicos e versões do Hive.

Específico para o uso no código:

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

Este código substituirá credit_codeos caracteres de espaço (ou seja, espaços) na coluna do campo \spor strings vazias. \\sA barra invertida dupla serve para escapar da barra invertida, porque a própria barra invertida também precisa ser escapada na expressão regular.

Isso significa que se credit_codea coluna contiver quaisquer caracteres de espaço em branco, eles serão substituídos por strings vazias. Por exemplo, se credit_codeo valor de é ABC 123 DEF, o resultado após a substituição é ABC123DEF, ou seja, os espaços são removidos.

Específico para o uso no código:

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

Esse código é usado para hisentnameexecutar várias operações de substituição no valor da coluna e armazenar os resultados processados ​​na hisentnamecoluna.

  1. regexp_replace(hisentname ,';',';')substitui hisentnameo ponto-e-vírgula chinês (;) na coluna pelo ponto-e-vírgula inglês (;). Esta é a primeira operação de substituição.
  2. regexp_replace(...,'&|nbsp;|&|/|:|:|\\\.|企业基本信息|名称|企业(机构)名称|企业名称|名称序号|联系电话|第一名称|第二名称|序号|【变更前内容】|\\\*|-|[0-9]|[a-zA-Z]','')Use correspondência de padrão de expressão regular para hisentnamesubstituir alguns caracteres especiais e palavras-chave na coluna. Os conteúdos específicos a serem substituídos incluem: &, nbsp;, &, /, :, :, ., informações básicas da empresa, nome, nome da empresa (organização), nome da empresa, número de série do nome, número de contato, nome, segundo nome , número de série, 【conteúdo antes da alteração】, * (a barra invertida precisa ter escape), números e letras. Esta é a segunda operação de substituição.
  3. regexp_replace(...,'\\s','')Substitui os caracteres de espaço na string substituída acima por uma string vazia. Esta é a terceira operação de substituição. \sé a representação de um caractere de espaço em uma expressão regular.

Finalmente, após três operações de substituição, a string processada é armazenada na hisentnamecoluna.

substr - retorna uma substring de uma string

SUBSTR()função para extrair uma substring de uma string

A sintaxe da função é a seguinte:

SUBSTR(string, start, length)

em:

  • stringé a string original da qual extrair a substring.
  • startÉ o índice de posição para iniciar a busca, o índice começa em 1.
  • lengthé o comprimento da substring a ser extraída.

SUBSTR()A função retorna a substring extraída da string original.

Exemplo: Suponha que exista uma string Hello, World!e queremos extrair uma substring dela World, podemos usar a seguinte declaração:

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

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

No código acima, SUBSTR('Hello, World!', 8, 5)significa extrair uma substring de comprimento 5 da 8ª posição da string

upper / lower - converte string para maiúsculas/minúsculas

upper()Função para converter uma string para letras maiúsculas

A sintaxe da função é a seguinte:

upper(string)
  • string: A string a ser convertida em maiúsculas.

Esta função converte todos os caracteres na string fornecida para letras maiúsculas e retorna o resultado convertido.

aqui estão alguns exemplos:

  1. Converter uma string para letras maiúsculas:
SELECT upper('hello world');

saída:HELLO WORLD

  1. Converter strings em uma coluna para letras maiúsculas:
SELECT upper(column_name) FROM table_name;

Essa instrução seleciona uma coluna em uma tabela e converte todos os valores de string na coluna para letras maiúsculas.

Observação: upper()a função não diferencia maiúsculas de minúsculas no Hive SQL, portanto, pode ser usada em qualquer string, independentemente de sua capitalização original.

lower()use o mesmo upper(), o efeito é oposto

explodir- dividir uma matriz ou mapa em várias linhas

LATERAL VIEW EXPLODE()Popularmente conhecida como função burst, ela é usada para dividir uma coluna da matriz (Array) em várias linhas e gerar cada elemento da matriz como uma nova linha. Essa função geralmente é SELECTusada em conjunto com a instrução

Sintaxe de uso da função:

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

Descrição do parâmetro:

  • array_column: A coluna da matriz a ser dividida (Array).
  • table_alias: Alias ​​da tabela gerada.
  • column_alias: Alias ​​da coluna gerada.

Ao usar LATERAL VIEW EXPLODE()a função, o Hive tratará cada elemento na coluna do array como uma nova linha e o colocará na table_aliastabela especificada por . Você pode então SELECTfazer referência a ele em uma declaração column_aliase fazer processamento adicional na linha de divisão.

Exemplo de uso: suponha que temos uma tabela my_tablecom uma array_colcoluna de array chamada e queremos dividir o array em linhas.

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

No exemplo acima, LATERAL VIEW EXPLODE()a função divide a coluna do array my_tableda tabela array_colem linhas. Cada elemento da matriz se torna uma nova linha e my_table_aliasessas linhas divididas são chamadas de aliases. Você pode SELECTselecionar as colunas necessárias na instrução e executar outras operações nas linhas divididas.

Observe que LATERAL VIEW EXPLODE()a função só pode ser usada para divisão de colunas de matriz, não para outros tipos de colunas

função de data

dateiff - retorna a diferença em dias entre duas datas

datediff()função para calcular a diferença em dias entre duas datas. Leva duas datas como parâmetros de entrada e retorna um inteiro representando a diferença em dias entre a primeira data e a segunda data.

A sintaxe da função é a seguinte:

datediff(enddate, startdate)

Entre eles, enddateestão startdateos parâmetros de data, que podem ser do tipo string ou do tipo data. enddateindica uma data posterior e startdateindica uma data anterior.

aqui estão alguns exemplos:

Exemplo 1:

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

A saída é: 7

Exemplo 2:

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

A saída é: -30

No exemplo 1, a primeira data é '2023-06-27' e a segunda data é '2023-06-20', e a diferença de dias entre elas é 7.

No exemplo 2, a primeira data é '2023-06-01' e a segunda data é '2023-07-01', como a primeira data é posterior, o resultado é negativo, indicando que a primeira data é 30 dias antes o segundo encontro.

Observação: datediff()a função calcula a diferença em dias entre duas datas, independentemente do fuso horário e da parte do tempo.

current_timestamp - retorna o timestamp atual

CURRENT_TIMESTAMP()A função é usada para obter o timestamp atual, representando a data e hora atuais.

CURRENT_TIMESTAMP()A função não tem parâmetros, ela retorna um valor de timestamp, geralmente no formato 'aaaa-MM-dd HH:mm:ss' ou 'aaaa-MM-dd HH:mm:ss.SSS'.

Uso de exemplo de função:

SELECT CURRENT_TIMESTAMP() AS current_time;

Resultado da saída: 2023-06-05 12:34:56

No exemplo acima, CURRENT_TIMESTAMP()a função retorna a data e hora atuais, ou seja '2023-06-05 12:34:56', . Observe que a saída real irá variar de acordo com a hora atual do sistema.

função de matriz

sort_array - Classifica uma matriz

sort_arrayA função é usada para classificar uma matriz e retorna a matriz classificada como resultado. Ele pode ser usado para executar operações de classificação em arrays contendo elementos.

sort_array() é frequentemente usado em conjunto com a função collect_list()

Segue sort_arraya sintaxe da função:

sort_array(array[, ascendingOrder])

Entre eles, arrayestá a matriz a ser classificada, ascendingOrderé um parâmetro opcional, especifica se deseja classificar em ordem crescente, o padrão é true(crescente).

sort_arrayA função classifica o array fornecido e retorna o array classificado. Se nenhuma ordem de classificação for especificada, o padrão será classificado em ordem crescente.

sort_arrayExemplo de uso da função:

Suponha que haja uma numberstabela nomeada com as seguintes colunas: id(number) e values(array contendo inteiros).

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

Para valuesclassificar uma matriz, a seguinte consulta pode ser usada:

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

Os resultados da consulta ficarão assim:

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

Para cada linha, sort_arraya função valuesclassifica a matriz e retorna a matriz classificada como resultado.

Vale ressaltar que sort_arraya função apenas ordena os elementos do array e não altera os valores das demais colunas. Durante o processo de classificação, os elementos na matriz são classificados de acordo com seus tipos de dados padrão, por exemplo, inteiros são classificados por valor numérico e strings são classificados por ordem alfabética.

array_contains - Verifica se um array contém o elemento especificado

A função ARRAY_CONTAINS() é usada para verificar se o elemento especificado está contido na matriz e retorna um valor booleano (verdadeiro ou falso). Ele pode ser usado para verificação de membros e operações de filtragem em arrays.

Introdução à função: A função ARRAY_CONTAINS(array, value) aceita dois parâmetros: um array e um valor. Ele verifica se o valor especificado está contido na matriz e retorna um resultado booleano.

Exemplo de cenário de negócios:

  1. Correspondência de tags de usuário: suponha que haja uma tabela de usuário que contenha um ID de usuário (user_id) e uma lista de tags para o usuário (tags). A lista de tags é um array que armazena os hobbies do usuário. Para encontrar usuários com uma tag de interesse específica, a função ARRAY_CONTAINS() pode ser usada para correspondência:
SELECT user_id
FROM users
WHERE ARRAY_CONTAINS(tags, 'sports');
  1. Triagem de commodities: suponha que haja uma tabela de produtos que contenha um ID de produto (product_id) e uma matriz de setores aplicáveis ​​(indústrias). Para filtrar produtos adequados para uma indústria específica, você pode usar a função ARRAY_CONTAINS() para filtrar:
SELECT product_id
FROM products
WHERE ARRAY_CONTAINS(industries, 'technology');
  1. Estatísticas de agregação de matriz: suponha que haja uma tabela de dados de vendas, que contém uma matriz de ID do produto (product_id) e volume de vendas (sales_amounts). Para contar o número de vendas de cada produto, você pode usar a função ARRAY_CONTAINS() para contar o número de elementos do array que satisfazem a condição:
SELECT product_id, COUNT(*) AS sales_count
FROM sales_data
WHERE ARRAY_CONTAINS(sales_amounts, 0);

Nesses exemplos, a função ARRAY_CONTAINS() é usada para verificar se a associação na matriz atende a determinadas condições. Ele pode ajudar com operações como correspondência de rótulos, filtragem de matriz e agregação de matriz, suportando assim a consulta e análise de dados em vários cenários de negócios.

Deve-se observar que a função ARRAY_CONTAINS() pode exigir métodos de uso mais complexos para tipos de dados complexos em arrays, como estruturas ou arrays aninhados. Ao usar esta função em um ambiente e ferramenta específicos, consulte a documentação relevante e o guia oficial para o uso e comportamento exatos.

função de criptografia

md5 - Calcula o hash MD5 de uma string

MD5()Função para calcular o valor de hash MD5 de uma determinada string. MD5 é um algoritmo de hash comumente usado que converte dados de entrada de qualquer comprimento em um valor de hash de comprimento fixo (geralmente 128 bits) que é teoricamente único

MD5()A função recebe uma string como entrada e retorna o hash MD5 dessa string, representado como uma string. Ele pode ser usado para calcular o valor de hash de cadeias de caracteres no Hive SQL e geralmente é usado em cenários como resumo de dados, comparação de dados e criptografia de dados.

Exemplo de uso: Suponha que temos uma string 'Hello, World!'e queremos calcular seu hash MD5.

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

No exemplo acima, MD5('Hello, World!')a expressão 'Hello, World!'calcula o valor de hash MD5 da string e o retorna como uma string. O resultado é semelhante '65a8e27d8879283831b664bd8b7f0ad4'.

Observação: MD5 é um algoritmo de hash mais antigo e, embora ainda possa ser usado em alguns cenários, foi considerado inseguro. Em aplicações práticas, especialmente quando há dados confidenciais envolvidos, é recomendável usar um algoritmo de hash mais poderoso e seguro, como o SHA-256. No Hive, SHA2()também é fornecida uma função para calcular o valor de hash SHA-2.

sha2 - Calcula o hash SHA-2 de uma string

SHA2()A função é usada para calcular o valor de hash SHA-2 (Secure Hash Algorithm 2) da string fornecida. SHA-2 é um conjunto de funções hash criptográficas que inclui diferentes variantes, como SHA-224, SHA-256, SHA-384 e SHA-512. Esses algoritmos foram projetados pela National Security Agency (NSA) e são amplamente utilizados em aplicativos de criptografia e segurança.

SHA2()A função aceita dois parâmetros: a string a ser hash e o número de bits para o algoritmo de hash. O número de bits pode ser 256, 384 ou 512, correspondendo a SHA-256, SHA-384 e SHA-512, respectivamente. Por exemplo, SHA2('hello', 256)retornará o hash SHA-256 da string 'hello'.

SHA2()Veja a seguir um exemplo de consulta que demonstra como usar funções no Hive :

SELECT SHA2('hello', 256);

saída:

185f8db32271fe25f561a6fc938b2e264306ec304eda518007d1764826381969

Este é o hash SHA-256 da string 'hello'. Observe que o hash de saída é uma string hexadecimal.

SHA2()As funções geralmente são usadas em cenários como segurança de dados, resumo de dados e proteção por senha no Hive. Por exemplo, hashes de dados confidenciais podem ser armazenados em tabelas Hive em vez de dados de texto simples para maior segurança.

SHA2()e MD5()são funções usadas no Hive para calcular valores de hash, mas existem algumas diferenças importantes entre elas

  1. Algoritmo de hash: SHA2()use a família de algoritmos SHA-2 e MD5()use o algoritmo MD5. O SHA-2 é um algoritmo de hash mais seguro e poderoso do que o MD5, fornece diferentes variantes, como SHA-256, SHA-384 e SHA-512, você pode escolher diferentes números de bits de acordo com suas necessidades. Em contraste, o algoritmo MD5 provou ter algumas falhas de segurança e é vulnerável a ataques de colisão.
  2. Comprimento de saída: SHA2()O comprimento de saída pode variar dependendo do número de bits escolhido, MD5()sempre produzindo um hash de 128 bits (16 bytes). SHA-256 produz um hash de 256 bits (32 bytes), SHA-384 produz 384 bits (48 bytes) e SHA-512 produz 512 bits (64 bytes). Comprimentos de saída mais longos fornecem maior segurança.
  3. Probabilidade de colisão: Devido às características do algoritmo MD5, sua probabilidade de colisão é maior que a do algoritmo SHA-2. Uma colisão é quando duas entradas diferentes produzem o mesmo hash. Embora o algoritmo SHA-2 também possa colidir, a probabilidade é muito menor do que a do MD5.
  4. Segurança: O algoritmo SHA-2 oferece maior segurança do que o algoritmo MD5. O algoritmo MD5 foi amplamente quebrado e não é adequado para armazenar hashes de dados confidenciais. O algoritmo SHA-2 é considerado um dos algoritmos de hash mais seguros e resistentes a colisões.

Resumindo, se os valores de hash precisam ser calculados no Hive e a segurança é uma consideração importante, é recomendável usar SHA2()funções, especialmente para escolher SHA-256 ou bits superiores. As funções MD5()podem ser úteis em algumas situações de validação simples ou não sensíveis à segurança.

criptografar - Criptografar uma string

encrypt()A função é usada para criptografar a string fornecida. Ele criptografa uma string usando o algoritmo e a chave de criptografia especificados e retorna o resultado criptografado. Esta função pode ser usada para proteger dados confidenciais, como senhas ou outras informações confidenciais.

encrypt()A sintaxe da função é a seguinte:

encrypt(string input, string key);

Descrição do parâmetro:

  • input: String para criptografar.
  • key: a chave usada para criptografia.

Nota: As funções no Hive encrypt()precisam instalar e habilitar o plug-in de criptografia do Hive para funcionar normalmente. Por padrão, o Hive não fornece funções de criptografia e configurações e plug-ins adicionais são necessários para usar esta função.

Exemplo usando encrypt()funções:

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

No exemplo acima, a string "password123" é criptografada com a chave "mySecretKey" e o resultado criptografado é retornado como "encrypted_password".

Observe que algoritmos de criptografia e plug-ins de criptografia específicos dependem da configuração do Hive e das configurações do ambiente. Algoritmos de criptografia comuns incluem AES, DES, RSA, etc. O algoritmo específico usado depende da configuração do Hive e do suporte de plug-ins.

função de conversão de tipo

cast - lança uma expressão para o tipo de dados especificado

cast()As funções são usadas para converter o valor de uma expressão ou coluna em um tipo de dados especificado. Ele fornece a função de conversão de tipo, que pode converter um tipo de dados em outro tipo de dados compatível.

cast()A sintaxe da função é a seguinte:

CAST(expression AS data_type)

onde expressioné a expressão ou coluna a ser convertida e data_typeé o tipo de dados de destino a ser convertido.

Aqui estão alguns exemplos comuns de conversão de tipo de dados:

-- 将字符串转换为整数
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

Deve-se observar que cast()a função só pode converter tipos de dados compatíveis. Se uma conversão não for possível ou se houver tipos de dados incompatíveis, a conversão falhará e um erro será lançado.

No Hive SQL, cast()as funções são muito úteis na conversão de tipo de dados, conversão de formato de dados e conversão de precisão de dados e podem converter dados em um tipo adequado para cálculo específico ou requisitos de processamento conforme necessário.

to_date - converte uma string em um formato de data

A função to_date é usada para converter uma string em um formato de data. Ele analisa a string fornecida em uma data e retorna o valor de data correspondente.

Introdução à função: A função to_date(string) aceita um parâmetro de string e o analisa em um formato de data. O parâmetro string deve estar de acordo com o formato de data suportado pelo Hive, caso contrário, um valor NULL será retornado.

Exemplos de cenários de uso:

  1. Conversão de data de string: suponha que haja uma tabela de dados que contenha um campo de data date_str, que armazena datas em formato de string (como '2023-06-29'). Para cálculo e análise de datas, datas de string precisam ser convertidas em tipos de data:
SELECT to_date(date_str) AS date
FROM table;
  1. Comparação e filtragem de data: suponha que haja uma tabela de pedidos, que contém o número do pedido (order_id) e a data do pedido (order_date). Para filtrar pedidos em um intervalo de datas específico, a função to_date pode ser usada para converter o parâmetro de consulta em um formato de data e comparar com a data do 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. Estatísticas de agregação de data: suponha que haja uma tabela de dados de vendas, que contém a data de vendas (sale_date) e o valor das vendas (sale_amount). Para contar o valor das vendas de acordo com a data, você pode usar a função to_date para converter a string de data em uma data e realizar uma operação de agregação:
SELECT to_date(sale_date) AS date, SUM(sale_amount) AS total_sales
FROM sales
GROUP BY to_date(sale_date);

Nesses exemplos, a função to_date é usada para converter uma data de string em um tipo de data para operações como comparação de datas, agregação de datas e cálculo de datas. É útil ao trabalhar com dados de data e facilita consultas e análises baseadas em data.

Observe que a função to_date depende do formato de data da string de entrada, portanto, você precisa garantir que a string de entrada esteja em conformidade com o formato de data suportado pelo Hive.

to_unix_timestamp - Converte uma string de data ou hora para o formato UNIX timestamp

A função to_unix_timestamp é usada para converter uma string de data ou hora para o formato de carimbo de data/hora do UNIX. Ele analisa a string de data ou hora fornecida em um registro de data e hora do UNIX e retorna o valor inteiro correspondente.

Introdução à função: A função to_unix_timestamp(string) aceita um parâmetro de string de data ou hora e o analisa no formato de carimbo de data/hora do UNIX. O parâmetro string deve estar de acordo com o formato de data ou hora suportado pelo Hive, caso contrário, um valor NULL será retornado. Um registro de data e hora do UNIX é o número de segundos decorridos desde 1º de janeiro de 1970 00:00:00 UTC.

Exemplos de cenários de uso:

  1. Comparação de tempo e filtragem: suponha que haja uma tabela de log que contenha um campo de carimbo de data/hora de log (log_timestamp). Para filtrar logs dentro de um intervalo de tempo específico, você pode usar a função to_unix_timestamp para converter o parâmetro de consulta em um carimbo de data/hora UNIX e compará-lo com o carimbo de data/hora do log:
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 e conversão de tempo: Suponha que exista uma tabela de tarefas, que contém a hora de início da tarefa (start_time) e a duração da execução da tarefa (duração, em segundos). Para calcular o horário de término da tarefa, você pode usar a função to_unix_timestamp para converter o horário de início em um carimbo de data/hora UNIX e combiná-lo com o tempo de execução da tarefa para cálculo:
SELECT task_id, start_time, duration,
    from_unixtime(to_unix_timestamp(start_time) + duration) AS end_time
FROM tasks;
  1. Conversão de formato de carimbo de data/hora: suponha que haja uma tabela de dados que contenha um campo de data (date_str) que armazene datas em formato de string (como '2023-06-29'). Para converter um campo de data em um registro de data e hora do UNIX e usá-lo em cálculos e processamentos subsequentes, você pode usar a função to_unix_timestamp para conversão:
SELECT date_str, to_unix_timestamp(date_str) AS unix_timestamp
FROM table;

Nesses exemplos, a função to_unix_timestamp é usada para converter uma string de data ou hora em um carimbo de data/hora UNIX para comparação de tempo, cálculo de tempo e conversão de formato de hora. É muito útil ao trabalhar com dados temporais e fazer cálculos relacionados ao tempo.

Observe que a função to_unix_timestamp depende do formato de data ou hora da string de entrada, portanto, você precisa garantir que a string de entrada esteja em conformidade com o formato de data ou hora suportado pelo Hive

from_unixtime - Converte um registro de data e hora do UNIX em um formato de string de data ou hora

A função from_unixtime é usada para converter um carimbo de data/hora do UNIX em um formato de string de data ou hora. Ele analisa o carimbo de data/hora UNIX fornecido em uma string de data ou hora e retorna o valor da string correspondente.

Introdução à função: A função from_unixtime(unix_timestamp[, format]) aceita um parâmetro de carimbo de data/hora do UNIX e o converte em uma string de data ou hora. Ele pode especificar um parâmetro de formato opcional que define o formato da string de saída. Se nenhum parâmetro de formato for fornecido, o formato "aaaa-MM-dd HH:mm:ss" será usado por padrão.

Exemplos de cenários de uso:

  1. Conversão de registro de data e hora UNIX: suponha que haja uma tabela de dados que contenha um campo de registro de data e hora UNIX (unix_timestamp). Para converter um registro de data e hora do UNIX em um formato legível de data e hora, a função from_unixtime pode ser usada para a conversão:
SELECT unix_timestamp, from_unixtime(unix_timestamp) AS datetime
FROM table;
  1. Personalização do formato de data: Suponha que haja uma tabela de pedidos, que contém a data do pedido (order_date). Para gerar a data do pedido em um formato personalizado, você pode usar a função from_unixtime e especificar o parâmetro de formato:
SELECT order_id, from_unixtime(order_date, 'yyyy/MM/dd') AS formatted_date
FROM orders;
  1. Conversão de registro de data e hora: suponha que haja uma tabela de log que contenha um campo de registro de data e hora (log_timestamp). Para converter registros de data e hora de log em um formato de hora específico, use a função from_unixtime e especifique o parâmetro de formato:
SELECT log_id, from_unixtime(log_timestamp, 'HH:mm:ss') AS log_time
FROM logs;

Nesses exemplos, a função from_unixtime é usada para converter um registro de data e hora do UNIX em uma sequência de data ou hora para personalização do formato de hora, conversão de registro de data e hora e saída legível por humanos. É útil para lidar com carimbos de data/hora do UNIX e conversões de formato de data/hora.

Deve-se observar que a função from_unixtime retorna um tipo de string, portanto cálculos subsequentes, comparações ou processamento de formato precisam ser executados conforme necessário durante o uso.

função matemática

maior - retorna o maior valor

GREATEST()A função é usada para retornar o maior valor de um determinado conjunto de valores. Ele aceita vários parâmetros e retorna o máximo desses parâmetros.

gramática:

GREATEST(value1, value2, ...)

parâmetro:

  • value1, value2, ...: o valor a ser comparado, que pode ser um número, string ou tipo de data.

valor de retorno:

  • Retorna o valor máximo entre os argumentos.

Precauções:

  • Se o parâmetro contiver um valor NULL, o resultado de retorno será NULL.
  • GREATEST()Quando uma função compara parâmetros de tipos diferentes, ela irá converter e comparar de acordo com as regras de comparação dos tipos.

Exemplo:

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'

floor - Retorna o maior inteiro não maior que o número fornecido (arredondado para baixo)

A função floor é usada para retornar o maior inteiro não maior que o número fornecido. Ele arredonda para baixo o argumento numérico fornecido e retorna o valor inteiro mais próximo não maior que esse número.

Introdução à função: A função floor(x) aceita um parâmetro numérico x e retorna o maior valor inteiro não maior que x. Se x for positivo, retorna o maior inteiro menor ou igual a x; se x for negativo, retorna o maior inteiro maior ou igual a x.

Exemplos de cenários de uso:

  1. Arredondamento de valores: Suponha que exista uma tabela de vendas, que contém o valor total (total_amount) do pedido de venda. Para contar a parte inteira do valor do pedido, você pode usar a função floor para arredondar o valor total para baixo:
SELECT order_id, total_amount, floor(total_amount) AS rounded_amount
FROM sales;
  1. Ajuste de preços: Suponha que exista uma tabela de produtos, que contém os preços dos produtos (preço). Para fins de ajuste de preço, o preço é arredondado para o valor inteiro mais próximo e processado como o preço ajustado:
SELECT product_id, price, floor(price) AS adjusted_price
FROM products;
  1. Conversão de registro de data e hora: suponha que haja uma tabela de log que contenha um campo de registro de data e hora (log_timestamp). Para arredondar os carimbos de data/hora do log para o nível de minuto e para agrupar e agregar logs, você pode usar a função floor:
SELECT floor(log_timestamp/60)*60 AS minute_timestamp, COUNT(*) AS count
FROM logs
GROUP BY floor(log_timestamp/60)*60;

Nesses exemplos, a função floor é usada para arredondar valores numéricos ou carimbos de data/hora para manipulação numérica, ajuste de preço, conversão de carimbo de data/hora e operações de agregação. É muito útil ao trabalhar com dados numéricos e temporais e pode ser usado para processamento de dados e cálculos em vários cenários de negócios.

Deve-se observar que o resultado retornado pela função floor é um tipo inteiro, que pode ser calculado e comparado com outros valores

função lógica

caso em que - implementa julgamento condicional e lógica de ramificação

CASE WHENAs instruções são usadas para executar ações diferentes ou retornar valores diferentes com base nas condições. É semelhante a instruções condicionais (como instruções if-else) em outras linguagens de programação.

CASE WHENA sintaxe geral da instrução é a seguinte:

CASE WHEN condition1 THEN result1
     WHEN condition2 THEN result2
     ...
     ELSE resultN
END
  • condition1, condition2, … são as expressões condicionais a serem avaliadas.
  • result1, result2, … são as expressões de resultado a serem retornadas quando as condições correspondentes forem atendidas.
  • ELSE resultNé opcional e é usado para especificar uma expressão de resultado padrão a ser retornada quando todas as condições não forem atendidas.

Precauções:

  • CASE WHENAs instruções avaliam as condições sequencialmente e, quando uma condição é atendida, o resultado correspondente é retornado e as condições subsequentes não são avaliadas novamente.
  • Várias WHENcláusulas podem ser usadas para definir diferentes condições e resultados conforme necessário.
  • Se nenhuma cláusula satisfizer a condição e nenhuma ELSEcláusula for fornecida, CASE WHENa instrução retornará NULL.

O exemplo a seguir mostra como usar a instrução no 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;

No exemplo acima, dependendo do column1valor de , diferentes sizevalores são retornados com base em diferentes condições. column1Retorne se for maior que 10 'Large'; retorne se for maior que 5 , mas menor ou igual a 10 'Medium'; caso contrário , retorne 'Small'.

com como

WITH ASA instrução é usada para criar uma tabela ou subconsulta temporária e atribuir a ela um alias. Essa tabela temporária ou subconsulta pode ser usada em consultas subsequentes.

WITH ASA sintaxe da declaração é a seguinte:

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

O uso WITH tmp ASda instrução pode melhorar a legibilidade e a capacidade de reutilização da consulta, especialmente quando a consulta precisa se referir ao mesmo resultado de subconsulta várias vezes. Evita escrever a mesma subconsulta repetidamente e simplifica a estrutura da instrução de consulta

Tabelas temporárias criadas usando WITHcláusulas são recicladas automaticamente e operações de reciclagem manual não são necessárias.

O tempo de vida de uma tabela temporária está vinculado ao ciclo de execução de uma consulta. Quando a consulta for executada, a tabela temporária será excluída automaticamente e os recursos ocupados por ela serão liberados. Isso significa que as tabelas temporárias são visíveis no contexto da consulta atual, mas não existirão mais após o término da consulta.

Esse recurso de reciclagem automática torna o gerenciamento de tabelas temporárias mais conveniente, sem a necessidade de excluir ou liberar recursos manualmente. As tabelas temporárias são recriadas sempre que uma consulta é executada, garantindo a independência e o isolamento da consulta.

Deve-se observar que as tabelas temporárias são válidas apenas na sessão atual e não são visíveis para outras sessões ou consultas executadas em paralelo. Se você precisar compartilhar tabelas temporárias entre várias consultas, considere usar tabelas temporárias globais ou tabelas permanentes.

se

No Hive SQL, IFé uma expressão condicional usada para escolher realizar diferentes operações de acordo com o resultado da condição.

A sintaxe é a seguinte:

IF(condition, value_if_true, value_if_false)

em:

  • conditioné uma expressão booleana que especifica uma condição.
  • value_if_trueé o valor ou a expressão a ser retornada se a condição for verdadeira.
  • value_if_falseé o valor ou a expressão a ser retornada se a condição for falsa.

Exemplo de uso:

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

No exemplo acima, de acordo com salaryo valor de , se o salário for maior que 5000, retorne 'High', caso contrário retorne'Low'

selecione “1” como xxx na tabela

Geralmente é usado para adicionar temporariamente uma coluna auxiliar para distinguir diferentes fontes, e uma string de valor constante é usada na frente de como

Por exemplo:

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

Neste código de amostra, '1' e '2' são usados ​​como identificadores de origem. Eles são uma coluna auxiliar usada para diferenciar a fonte de dados para code_table_1 e code_table_2

  1. Na primeira instrução SELECT '1' as sourceindica que a linha vem da tabela code_table_1e defina o sinalizador de origem como '1', alias source
  2. Na segunda instrução SELECT '2' as sourceindica que a linha vem da tabela code_table_2e defina o ID da fonte como '2', alias source

'1' e '2' são usados ​​apenas como identificadores auxiliares neste código, que são usados ​​para distinguir fontes de dados e ajudar a consultar e definir prioridades de filtro, e não têm outro significado especial.

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

Na parte da subconsulta da consulta, as duas instruções SELECT são de tabelas diferentes:

  1. O na primeira instrução SELECT '1' as sourceindica que a linha é da tabela n000_code_cb18e define o sinalizador de origem como '1'.
  2. O na segunda instrução SELECT '2' as sourceindica que a linha é da tabela n000_code_cb18_newe define o ID de origem como '2'.

O objetivo disso é mesclar a união de dados de todas as duas tabelas, classificar e particionar de acordo com o valor do identificador de origem, para que na função ROW_NUMBER() subsequente, a linha com maior prioridade em cada partição seja selecionada de acordo às regras especificadas.

Na parte final da consulta, where aa.rn=1a condição diz para selecionar apenas a linha com um número de linha (rn) de 1, ou seja, a linha com a prioridade mais alta em cada partição

Acho que você gosta

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