Traitement des données semi-structurées

Introduction à Snowflake SQL

George Boorman

Senior Curriculum Manager, DataCamp

Structuré par opposition à semi-structuré

Exemple de données structurées

| cust_id | cust_name | cust_age | cust_email            |
|---------|-----------|----------|-----------------------|
| 1       | cust1     | 40       | cust1***@gmail.com    |
| 2       | cust2     | 35       | cust2***@gmail.com    |
| 3       | cust3     | 42       | cust3***@gmail.com    |

Exemple de données semi-structurées

Données semi-structurées des clients au format JSON, le client 2 disposant de deux adresses e-mail.

Introduction à Snowflake SQL

Présentation de JSON

  • **Notation d'objet**JavaScript**
  • Cas d'utilisation courants : API Web et fichiers de configuration
  • Structure des données JSON :
    • Paires clé-valeur, par exemple : cust_id: 1

Exemple d'enregistrements JSON clients comprenant l'identifiant client, le nom, l'âge et l'adresse e-mail

Introduction à Snowflake SQL

JSON dans Snowflake

  • Prise en charge native de JSON
  • Flexible pour les schémas évolutifs

 

Comparaisons :

  • Postgres : Utilise JSONB
  • Snowflake : Utilise VARIANT
Introduction à Snowflake SQL

Comment Snowflake stocke les données JSON

  • VARIANT prend en charge les types de données OBJECT et ARRAY
    • OBJECT : { "key": "value"}
    • ARRAY : ["list", "of", "values"]
  • Création d'une table Snowflake pour traiter les données JSON
    CREATE TABLE cust_info_json_data (
      customer_id INT,
      customer_info VARIANT -- type de données VARIANT
    );
    
Introduction à Snowflake SQL

Fonctions de données semi-structurées

  • PARSE_JSON

    • expr : Données JSON au format chaîne
    • Renvoie : type VARIANT, objet JSON valide
Introduction à Snowflake SQL

PARSE_JSON

Exemple :

SELECT PARSE_JSON(
  -- Enclosed in strings      
  '{
  "cust_id": 1,
  "cust_name": "cust1",
  "cust_age": 40,
  "cust_email":"cust1***@gmail.com"
  }
  '-- Enclosed in strings
) AS customer_info_json

Résultat de PARSE_JSON

Introduction à Snowflake SQL

OBJECT_CONSTRUCT

  • OBJECT_CONSTRUCT

    • Syntaxe : OBJECT_CONSTRUCT( [<key1>, <value1> [, <keyN>, <valueN> ...]] )
    • Renvoie : Objet JSON
    SELECT OBJECT_CONSTRUCT(
      -- Comma separated values rather than : notation
          'cust_id', 1,
          'cust_name', 'cust1',
          'cust_age', 40,
          'cust_email', 'cust1***@gmail.com'
    )

Table avec la colonne « customer_info » contenant des données stockées au format JSON

Introduction à Snowflake SQL

Interrogation de données JSON dans Snowflake

JSON simple

  • :
    SELECT
      customer_info:cust_age, -- Use colon to access cust_age from column
      customer_info:cust_name,
      customer_info:cust_email,
    FROM 
      cust_info_json_data;
    

Résultat de la requête affichant l'âge du client, son nom et son adresse e-mail dans des colonnes distinctes.

Introduction à Snowflake SQL

Interrogation de données JSON imbriquées dans Snowflake

Exemple de JSON imbriqué

Données JSON imbriquées où l'adresse est un objet comportant des paires clé-valeur rue, ville et état

  • Deux-points : :
  • Point : .
Introduction à Snowflake SQL

Interrogation de JSON imbriqué à l'aide des notations deux-points/point

Accès aux valeurs à l'aide de la notation avec deux-points

<column>:<level1_element>:<level2_element>:<level3_element>

SELECT 
    customer_info:address:street AS street_name 
FROM 
    cust_info_json_data

Résultat de la requête affichant street_name

Accès aux valeurs à l'aide de la notation par points

<column>:<level1_element>.<level2_element>.<level3_element>

SELECT
    customer_info:address.street AS street_name
FROM
    cust_info_json_data

Résultat de la requête affichant street_name

Introduction à Snowflake SQL

Passons à la pratique !

Introduction à Snowflake SQL

Preparing Video For Download...