JQ (Lakehouse v1)
La fonction JQ est une fonction SQL renvoyant un ensemble de lignes, qui permet d’appliquer des filtres jq à des données JSON stockées dans des colonnes Variant. Avec cette fonction, vous pouvez traiter des données JSON en appliquant un filtre jq donné, et obtenir les résultats sous forme d’un ensemble de lignes.
Syntaxe SQL
Section intitulée « Syntaxe SQL »JQ (<jq_expression>, <json_data>)| Paramètre | Description |
|---|---|
jq_expression |
Une expression de filtre jq qui définit comment traiter et transformer les données JSON avec la syntaxe jq. Cette expression peut indiquer comment sélectionner, modifier et manipuler les données au sein d’objets et de tableaux JSON. Pour en savoir plus sur la syntaxe, les filtres et les fonctions pris en charge par jq, consultez le manuel de jq. |
json_data |
Les données en entrée au format JSON que vous souhaitez traiter ou transformer avec l’expression de filtre jq. Il peut s’agir d’un objet JSON, d’un tableau ou de toute structure de données JSON valide. |
Type de retour
Section intitulée « Type de retour »La fonction JQ renvoie un ensemble de valeurs JSON, chaque valeur correspondant à un élément du résultat transformé ou extrait selon <jq_expression>.
Exemples SQL
Section intitulée « Exemples SQL »Pour commencer, nous créons une table nommée customer_data avec des colonnes id et profile, où profile est de type JSON pour stocker les informations des utilisateurs :
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"}');Cet exemple extrait des champs précis des données JSON :
SELECT id, jq('.name', profile) AS customer_nameFROM customer_data;
┌─────────────────────────────────────┐│ id │ customer_name │├─────────────────┼───────────────────┤│ 1 │ "Alice" ││ 2 │ "Bob" ││ 3 │ "Charlie" │└─────────────────────────────────────┘Cet exemple sélectionne l’ID de chaque utilisateur et son âge augmenté de 1 :
SELECT id, jq('.age + 1', profile) AS updated_ageFROM customer_data;
┌─────────────────────────────────────┐│ id │ updated_age │├─────────────────┼───────────────────┤│ 1 │ 31 ││ 2 │ 26 ││ 3 │ 36 │└─────────────────────────────────────┘Cet exemple convertit les noms de villes en majuscules :
SELECT id, jq('.city | ascii_upcase', profile) AS city_uppercaseFROM customer_data;
┌─────────────────────────────────────┐│ id │ city_uppercase │├─────────────────┼───────────────────┤│ 1 │ "NEW YORK" ││ 2 │ "LOS ANGELES" ││ 3 │ "CHICAGO" │└─────────────────────────────────────┘