列指向データベースの分析ワークフロー

NoSQL入門

Jake Roach

Data Engineer

Snowflakeの共通テーブル式

共通テーブル式(CTE):

  • WITH で定義する名前付きサブクエリ/一時テーブル
  • 後で参照できるオブジェクトを作成
  • 参照/JOIN するデータ量を減らす
  • モジュール化され、トラブルシュートが容易
WITH <cte-name> AS (
    SELECT
        ....
    FROM <table-name>
    [JOIN | WHERE | ...]
)

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

共通テーブル式の記述

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;
  • premium_books の一時オブジェクトを作成
  • 下流で premium_books を利用

$$

複数の一時オブジェクトも作成可能:

WITH 
    <first-name> AS (...),
    <second-name> AS (...),
    ...
...
;
NoSQL入門

Snowflakeのビュー

ビュー:

  • クエリ結果をテーブルのように参照
  • 非マテリアライズド/マテリアライズド
CREATE VIEW <view-name> AS
  SELECT
      ...
  FROM <table-name>
  [WHERE | JOIN | ...];
NoSQL入門

Snowflakeでビューを作成

CREATE VIEW premium_books AS
    SELECT
        title,
        author,
        avg_reviews
    FROM books
    WHERE price >= 25.00;
SELECT * FROM premium_books;
  • premium_books を呼ぶとクエリが実行
  • クエリの「名前付き定義」
CREATE MATERIALIZED VIEW premium_books AS
    SELECT
        title,
        author,
        avg_reviews
    FROM books
    WHERE price >= 25.00;
SELECT * FROM premium_books;
  • 実行時に結果を保存
  • 高速だがリフレッシュが必要
NoSQL入門

Ayo berlatih!

NoSQL入門

Preparing Video For Download...