Automatyzacja potoków danych w Snowflake
Emily Melhuish
Technical Curriculum Developer, Snowflake

Snowflake buforuje wyniki na trzech poziomach — każdy ma inny zakres i czas trwania

| Warunek | Brak trafienia w pamięć podręczną, gdy… |
|---|---|
| Tekst zapytania jest identyczny | Różnice w wielkości liter, odstępach lub aliasach |
| Brak funkcji niewymienianych | Funkcje zmieniające się między uruchomieniami: RANDOM |
| Tabele źródłowe niezmienione | DML, ponowne klastrowanie lub konsolidacja od ostatniego uruchomienia |
| Zachowany wynik nadal dostępny | Upłynął 24-godzinny TTL bez ponownego użycia lub 31 dni |
| Rola posiada wymagane uprawnienia | SELECT: rola bez uprawnień; SHOW: inna rola |

Pamięć podręczna magazynu
Pamięć podręczna metadanych
Uniemożliwia przycinanie:
SELECT *
FROM logistics.shipments
WHERE MONTH(dispatch_date) = 3;
Umożliwia przycinanie:
SELECT *
FROM logistics.shipments
WHERE dispatch_date >= '2024-03-01'
AND dispatch_date < '2024-04-01';
Unikaj SELECT *
-- Reads every column
SELECT *
FROM logistics.shipments
WHERE region = 'EMEA';
-- Reads only what's needed
SELECT shipment_id
, delivery_days
FROM logistics.shipments
WHERE region = 'EMEA';
Unikaj niejawnych złączeń krzyżowych
-- Missing join condition = Cartesian
SELECT s.shipment_id
, c.name
FROM shipments s, carriers c;
-- Explicit JOIN with ON condition
SELECT s.shipment_id
, c.name
FROM shipments s
JOIN carriers c ON s.carrier_id = c.id;
Automatyzacja potoków danych w Snowflake