Étape 2. Interrogation de données

Dans cette section, vous explorez les instructions SELECT pour interroger les données JSON.

  1. Récupérez device_type.

    SELECT src:device_type
      FROM raw_source;
    
    Copy

    La requête renvoie le résultat suivant :

    +-----------------+
    | SRC:DEVICE_TYPE |
    |-----------------|
    | "server"        |
    +-----------------+
    
    Copy

    La requête utilise la notation src:device_type pour spécifier le nom de la colonne et le nom de l’élément JSON à récupérer. Cette notation est similaire à la notation familière SQL table.column. Snowflake vous permet de spécifier une sous-colonne à l’intérieur d’une colonne parent, que Snowflake dérive dynamiquement de la définition de schéma incorporée dans les données JSON. Pour plus d’informations, reportez-vous à Interrogation de données semi-structurées.

    Note

    Le nom de la colonne n’est pas sensible à la casse, mais les noms des éléments JSON le sont.

  2. Récupérez la valeur device_type sans les guillemets.

    La requête précédente renvoie la valeur des données JSON entre guillemets. Vous pouvez supprimer les guillemets en transformant les données en un type de données spécifique, dans cet exemple une chaîne.

    Cette requête peut également attribuer un nom à la colonne en utilisant un alias.

    SELECT src:device_type::string AS device_type
      FROM raw_source;
    
    Copy

    La requête renvoie le résultat suivant :

    +-------------+
    | DEVICE_TYPE |
    |-------------|
    | server      |
    +-------------+
    
    Copy
  3. Récupérez les clés f répétitives imbriquées dans le tableau d’objets d’événements.

    Les données JSON d’exemple comprennent le tableau events. Chaque objet d’événement dans le tableau a le champ f comme indiqué.

    {
    "device_type": "server",
    "events": [
      {
        "f": 83,
        ..
      }
      {
        "f": 1000083,
        ..
      }
    ]}
    
    Copy

    Pour récupérer ces clés imbriquées, vous pouvez utiliser la fonction FLATTEN. La fonction aplatit les événements dans des lignes distinctes.

    SELECT
      value:f::number
      FROM
        raw_source
      , LATERAL FLATTEN( INPUT => SRC:events );
    
    Copy

    La requête renvoie le résultat suivant :

    +-----------------+
    | VALUE:F::NUMBER |
    |-----------------|
    |              83 |
    |         1000083 |
    +-----------------+
    
    Copy

    Notez que value est une des colonnes que la fonction FLATTEN renvoie. L’étape suivante fournit plus de détails sur l’utilisation de la fonction FLATTEN.

Suivant : Étape 3. Aplatissement de données