Subinterogări

Manipularea datelor în Snowflake

Jake Roach

Field Data Engineer

Ce sunt subinterogările?

Subinterogările permit utilizarea rezultatului unei interogări de către o altă interogare.

$$

  • Combinați mai multe interogări
  • Accent pe lizibilitate
  • Permit modularitate
  • Simplifică manipularea datelor!

$$

FROM ( ... ) sau WHERE ... IN ( ... )

Procesul logic de manipulare a datelor într-un mod mai lizibil și modular cu subinterogări

Manipularea datelor în Snowflake

Subinterogări și FROM

SELECT
    ...
-- Preluare din interogare, nu dintr-un tabel
FROM (

    -- Creați un set de rezultate care va 
    -- fi utilizat de interogarea principală
    SELECT 
        <fields>
    FROM <table>
    WHERE ...

);

Preluați date din rezultatul altei interogări, nu direct dintr-un tabel.

$$

  • Separați manipularea de analiză
  • Interogări mai ușor de citit și înțeles
  • Permite „portabilitate" și modificări mai simple
  • JOIN, WHERE, etc.
Manipularea datelor în Snowflake

Înainte de o subinterogare

SELECT
    month_num,
    -- windchill - temperature trebuie utilizat de două ori. Ce se întâmplă dacă se modifică?
    AVG(windchill - temperature) AS avg_differential
    MIN(windchill - temperature) AS most_differential
FROM weather
WHERE 
    -- Filtrarea are loc în aceeași interogare ca agregarea/analiza
    season = 'Winter' AND
    temperature < 32
GROUP BY month_num;
Manipularea datelor în Snowflake

După o subinterogare

-- Începeți cu subinterogarea, apoi agregați

SELECT month_num, AVG(differential) AS avg_differential MIN(differential) AS most_differential FROM (
SELECT month_num, windchill - temperature AS differential FROM weather WHERE season = 'Winter' AND temperature < 32
) GROUP BY month_num;
          | month_num | differential |
          | --------- | ------------ |
          |     12    |      -12     |
          |     1     |      -3      |
          |     1     |       0      |
          |     2     |      -7      |
| month_num | avg_differential | most_differential |
| --------- | ---------------- | ----------------- |
|     12    |       -5.77      |        -14        |
|     1     |       -1.91      |        -8         |
|     2     |       -8.13      |        -22        |

Analiza este ușor de înțeles și modificat odată ce datele sunt curățate.

Manipularea datelor în Snowflake

WHERE ... IN ( ... )

...

-- Filtrați înregistrările cu o valoare din 
-- setul de rezultate al subinterogării
WHERE <field> IN (

    SELECT <other-field> FROM ... 

);

Creați un set mic de rezultate pentru transformarea, filtrarea sau manipularea datelor.

$$

  • Filtrați înregistrările IN un set de rezultate non-constant
  • Poate fi utilizată în alte locuri din interogare
  • AVG, MAX, MIN, etc.
Manipularea datelor în Snowflake

WHERE ... IN( ... )

SELECT
    todays_date,
    temperature,
    status
FROM weather
WHERE todays_date IN (  -- Filtrați după zilele cu meciuri acasă câștigate

    SELECT
        game_date
    FROM game_schedule
    WHERE stadium = 'Home' AND did_win = TRUE

);
Manipularea datelor în Snowflake

WHERE ... IN ( ... )

Rezultatul unei interogări cu subinterogare pentru datele meteo ale meciurilor de acasă

Manipularea datelor în Snowflake

Să exersăm!

Manipularea datelor în Snowflake

Preparing Video For Download...