JQ (Lakehouse v1)
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.
Sintaxe SQL
Seção intitulada “Sintaxe SQL”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. |
Tipo de retorno
Seção intitulada “Tipo de retorno”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>.
Exemplos de SQL
Seção intitulada “Exemplos de SQL”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_nameFROM 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_ageFROM 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_uppercaseFROM customer_data;
┌─────────────────────────────────────┐│ id │ city_uppercase │├─────────────────┼───────────────────┤│ 1 │ "NEW YORK" ││ 2 │ "LOS ANGELES" ││ 3 │ "CHICAGO" │└─────────────────────────────────────┘