Автоматизація конвеєрів даних у Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake кешує результати на трьох рівнях — з різною зоною дії й тривалістю

| Умова | Кеш пропускається, коли… |
|---|---|
| Текст запиту збігається точно | Різняться регістр, пробіли або псевдоніми |
| Без невідтворюваних функцій | функції, що змінюються між запусками: RANDOM |
| Базові таблиці не змінені | DML, перекластеризація або консолідація після останнього запуску |
| Збережений результат досі доступний | TTL 24 год вичерпано без повторного використання, або 31 день |
| Роль має потрібні привілеї | SELECT: ролі бракує привілеїв SHOW: інша роль |

Кеш складу
Кеш метаданих
Заважає обрізанню розділів:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
Дозволяє обрізання розділів:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
Уникайте SELECT *
-- Читає всі стовпці
SELECT *
FROM logistics.shipments
WHERE region = 'EMEA';
-- Читає лише потрібне
SELECT shipment_id
, delivery_days
FROM logistics.shipments
WHERE region = 'EMEA';
Уникайте неявних крос-джоїнів
-- Відсутня умова JOIN = декартів добуток
SELECT s.shipment_id
, c.name
FROM shipments s, carriers c;
-- Явний JOIN з умовою ON
SELECT s.shipment_id
, c.name
FROM shipments s
JOIN carriers c ON s.carrier_id = c.id;
Автоматизація конвеєрів даних у Snowflake