Pular para o conteúdo

A função JQ é uma função SQL que retorna um conjunto de linhas e permite aplicar filtros jq a dados JSON armazenados em colunas Variant. Com essa função, você pode processar dados JSON aplicando um filtro jq especificado e obter os resultados como um conjunto de linhas.

JQ (<jq_expression>, <json_data>)
Parâmetro Descrição
jq_expression Uma expressão de filtro jq que define como processar e transformar dados JSON usando a sintaxe jq. Essa expressão pode especificar como selecionar, modificar e manipular dados dentro de objetos e arrays JSON. Para obter informações sobre a sintaxe, os filtros e as funções compatíveis com o jq, consulte o Manual do jq.
json_data A entrada em formato JSON que você deseja processar ou transformar usando a expressão de filtro jq. Pode ser um objeto JSON, um array ou qualquer estrutura de dados JSON válida.

A função JQ retorna um conjunto de valores JSON, em que cada valor corresponde a um elemento do resultado transformado ou extraído com base em <jq_expression>.

Para começar, criamos uma tabela chamada customer_data com as colunas id e profile, em que profile é do tipo JSON para armazenar informações de usuários:

CREATE TABLE customer_data (
id INT,
profile JSON
);
INSERT INTO customer_data VALUES
(1, '{"name": "Alice", "age": 30, "city": "New York"}'),
(2, '{"name": "Bob", "age": 25, "city": "Los Angeles"}'),
(3, '{"name": "Charlie", "age": 35, "city": "Chicago"}');

Este exemplo extrai campos específicos dos dados JSON:

SELECT
id,
jq('.name', profile) AS customer_name
FROM
customer_data;
┌─────────────────────────────────────┐
│ id │ customer_name │
├─────────────────┼───────────────────┤
│ 1 │ "Alice" │
│ 2 │ "Bob" │
│ 3 │ "Charlie" │
└─────────────────────────────────────┘

Este exemplo seleciona o ID do usuário e a idade incrementada em 1 para cada usuário:

SELECT
id,
jq('.age + 1', profile) AS updated_age
FROM
customer_data;
┌─────────────────────────────────────┐
│ id │ updated_age │
├─────────────────┼───────────────────┤
│ 1 │ 31 │
│ 2 │ 26 │
│ 3 │ 36 │
└─────────────────────────────────────┘

Este exemplo converte os nomes das cidades para maiúsculas:

SELECT
id,
jq('.city | ascii_upcase', profile) AS city_uppercase
FROM
customer_data;
┌─────────────────────────────────────┐
│ id │ city_uppercase │
├─────────────────┼───────────────────┤
│ 1 │ "NEW YORK" │
│ 2 │ "LOS ANGELES" │
│ 3 │ "CHICAGO" │
└─────────────────────────────────────┘