Alt sorgular

Snowflake'te Veri İşleme

Jake Roach

Field Data Engineer

Alt sorgular nedir?

Alt sorgular, bir sorgunun sonucunun başka bir sorgu tarafından kullanılmasını sağlar.

$$

  • Birden çok sorguyu birleştirir
  • Okunabilirliğe odaklanır
  • Modülerlik sağlar
  • Veri işlemesini kolaylaştırır

$$

FROM ( ... ) veya WHERE ... IN ( ... )

Alt sorgularla verileri daha okunabilir ve modüler biçimde işleme sürecinin mantığı

Snowflake'te Veri İşleme

Alt sorgular ve FROM

SELECT
    ...
-- Tablo yerine bir sorgudan çek
FROM (

    -- Ana sorgunun kullanacağı
    -- bir sonuç kümesi oluştur
    SELECT 
        <fields>
    FROM <table>
    WHERE ...

);

Veriyi doğrudan bir tablodan almak yerine başka bir sorgunun sonucundan alın.

$$

  • İşlemeyi analizden ayırın
  • Sorguları okumayı ve anlamayı kolaylaştırır
  • "Taşınabilirlik" ve kolay değişiklik sağlar
  • JOIN, WHERE, vb.
Snowflake'te Veri İşleme

Alt sorgudan önce

SELECT
    month_num,
    -- windchill - temperature burada iki kez kullanılmalı. Ya bu değişirse?
    AVG(windchill - temperature) AS avg_differential
    MIN(windchill - temperature) AS most_differential
FROM weather
WHERE 
    -- Filtreleme, toplama/analizle aynı sorguda yapılıyor
    season = 'Winter' AND
    temperature < 32
GROUP BY month_num;
Snowflake'te Veri İşleme

Alt sorgudan sonra

-- Önce alt sorgu, sonra toplama

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        |

Veri temizlendikten sonra analizi anlamak ve değiştirmek kolaydır.

Snowflake'te Veri İşleme

WHERE ... IN ( ... )

...

-- Alt sorgu sonuç kümesindeki değere göre filtrele
WHERE <field> IN (
    SELECT <other-field> FROM ... 


);

Dönüştürme, filtreleme veya veri işleme için küçük bir sonuç kümesi oluşturun.

$$

  • Sabit olmayan bir sonuç kümesindeki kayıtlara IN ile filtreleme
  • Sorgunun başka yerlerinde de kullanılabilir
  • AVG, MAX, MIN, vb.
Snowflake'te Veri İşleme

WHERE ... IN( ... )

SELECT
    todays_date,
    temperature,
    status
FROM weather
WHERE todays_date IN (  -- Kazanılan iç saha maçlarının tüm günlerine göre filtrele

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

);
Snowflake'te Veri İşleme

WHERE ... IN ( ... )

Her iç saha maçı için hava durumu verilerini bulmak üzere alt sorgu kullanan bir sorgunun sonuç kümesi

Snowflake'te Veri İşleme

Hadi pratik yapalım!

Snowflake'te Veri İşleme

Preparing Video For Download...