Аналитические рабочие процессы для колоночных баз данных

Введение в 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

Представления (Views):

  • Позволяют обращаться к результатам запроса как к таблице
  • Нематериализованные и материализованные
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

Давайте потренируемся!

Введение в NoSQL

Preparing Video For Download...