Bölümlendirme ve pencere fonksiyonları

PostgreSQL ile Zaman Serisi Analizi

Jasmin Ludolf

Content Developer, DataCamp

Bölümlendirme

  • Büyük bir tabloyu daha küçük alt kümelere, yani bölümlere ayırma
  • Büyük veri kümelerinde yararlıdır
  • Zaman serisi verisi:
    • her gün yeni veri
    • tarih aralığına göre bölümleme

Daha büyük bir tablonun iki alt kümeye bölündüğünü gösteren görsel

PostgreSQL ile Zaman Serisi Analizi

Bir aralık

  • Aralık sınırları:

    • alt uç dahil
    • üst uç hariç
  • Aralığa alternatif: olaya ya da kategoriye göre bölümleme

Aralık 1: 2000-2010

2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009

Aralık 2: 2010-2020

2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020

PostgreSQL ile Zaman Serisi Analizi

Şuna göre bölümle

  • PARTITION BY RANGE
CREATE TABLE timetable (
    date_info DATE,
    train_id INTEGER,
    departure_time TIMESTAMP,
    arrival_time TIMESTAMP,
    delay INTEGER
) PARTITION BY RANGE (date_info);
PostgreSQL ile Zaman Serisi Analizi

Bölüm tablosu

  • PARITION OF FOR VALUES FROM
  • timetable, RANGE yöntemiyle date_info üzerinde bölümlendirilmiş bir tablodur

 

CREATE TABLE timetable_y2020 PARTITION OF timetable
    FOR VALUES FROM ('2020-01-01') to ('2020-12-31');
PostgreSQL ile Zaman Serisi Analizi

Pencere fonksiyonları

  • Standart SQL sorgularını basitleştirir
  • Tablodaki her satır için bir değer döndürür (diğer satırlara bağlı olabilir)

 

  • Pencere: fonksiyonun çalıştığı satır kümesi
  • Pencere fonksiyonu: bu satırlarda kullanılan fonksiyon
  • Toplamalar karşılaştırmalıdır ancak sonuç tek değerde gruplanmaz
PostgreSQL ile Zaman Serisi Analizi

OVER ifadesi

  • OVER ifadesi bir pencere fonksiyonunu belirtir
  • Örnek: regional_timetable tarih, saatler, id, gecikmeler ve bölge
  • PARTITION BY yoksa: pencere fonksiyonu tüm tabloyu tek bölüm olarak alır
SELECT region, train_id, delay, AVG(delay) OVER (PARTITION BY region)
FROM regional_timetable;
|region|train_id|   delay|     avg|
|------|--------|--------|--------|
| north|       6|00:00:05|00:00:05|
| north|       2|00:00:03|00:00:05|
| north|       5|00:00:07|00:00:05|
|  east|       1|00:00:10|00:00:21|
|  east|       3|00:00:32|00:00:21|
| south|       8|00:01:00|00:01:00|
PostgreSQL ile Zaman Serisi Analizi

Haydi pratik yapalım!

PostgreSQL ile Zaman Serisi Analizi

Preparing Video For Download...