Flux d'analyse pour les bases de données en colonnes

Introduction à NoSQL

Jake Roach

Data Engineer

Expressions de table communes avec Snowflake

Expressions de table communes (CTE) :

  • Sous-requêtes/tables temporaires nommées, définies avec le mot-clé WITH
  • Crée un objet pouvant être interrogé ensuite
  • Réduit les données interrogées et/ou JOIN
  • Plus modulaire, dépannage facilité
WITH <cte-name> AS (
    SELECT
        ....
    FROM <table-name>
    [JOIN | WHERE | ...]
)

SELECT
    ...
FROM <cte-name>;
1 https://docs.snowflake.com/en/user-guide/queries-cte
Introduction à NoSQL

Rédiger des expressions de table communes

WITH premium_books AS (
    SELECT
        title,
        author,
        avg_reviews
    FROM books
    WHERE price > 25.00
)
SELECT
    author,
    MIN(avg_reviews) AS min_avg_reviews,
    MAX(avg_reviews) AS max_avg_reviews
FROM premium_books
GROUP BY author;
  • Création d'un objet temporaire premium_books
  • Utilisation de premium_books en aval

$$

Possibilité de créer plusieurs objets temporaires :

WITH 
    <first-name> AS (...),
    <second-name> AS (...),
    ...
...
;
Introduction à NoSQL

Vues avec Snowflake

Vues :

  • Permettent d'accéder aux résultats d'une requête comme à une table
  • Non matérialisées et matérialisées
CREATE VIEW <view-name> AS
  SELECT
      ...
  FROM <table-name>
  [WHERE | JOIN | ...];
Introduction à NoSQL

Créer des vues avec Snowflake

CREATE VIEW premium_books AS
    SELECT
        title,
        author,
        avg_reviews
    FROM books
    WHERE price >= 25.00;
SELECT * FROM premium_books;
  • La requête s'exécute quand premium_books est appelée
  • « Définition nommée » d'une requête
CREATE MATERIALIZED VIEW premium_books AS
    SELECT
        title,
        author,
        avg_reviews
    FROM books
    WHERE price >= 25.00;
SELECT * FROM premium_books;
  • Les résultats sont stockés à l'exécution
  • Meilleure performance de requête, nécessite un rafraîchissement
Introduction à NoSQL

Passons à la pratique !

Introduction à NoSQL

Preparing Video For Download...