Partisi dan window function

Analisis Deret Waktu di PostgreSQL

Jasmin Ludolf

Content Developer, DataCamp

Partisi

  • Membagi tabel besar menjadi subset kecil (partisi)
  • Berguna untuk dataset besar
  • Data runtun waktu:
    • data baru setiap hari
    • partisi per rentang tanggal

Ilustrasi tabel besar dipecah menjadi dua subset

Analisis Deret Waktu di PostgreSQL

Sebuah rentang

  • Batas rentang:

    • inklusif di batas bawah
    • eksklusif di batas atas
  • Alternatif rentang: partisi berdasarkan peristiwa atau kategori

Rentang 1: 2000–2010

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

Rentang 2: 2010–2020

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

Analisis Deret Waktu di PostgreSQL

Partition by

  • 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);
Analisis Deret Waktu di PostgreSQL

Partition of

  • PARITION OF FOR VALUES FROM
  • timetable adalah tabel terpartisi, dipartisi pada date_info dengan metode RANGE

 

CREATE TABLE timetable_y2020 PARTITION OF timetable
    FOR VALUES FROM ('2020-01-01') to ('2020-12-31');
Analisis Deret Waktu di PostgreSQL

Window function

  • Menyederhanakan query SQL biasa
  • Mengembalikan nilai untuk tiap baris (dapat bergantung pada baris lain)

 

  • Window: himpunan baris tempat fungsi dijalankan
  • Window function: fungsi yang diterapkan pada window tersebut
  • Fungsi agregat bersifat komparatif, tapi hasilnya tidak digabung jadi satu nilai
Analisis Deret Waktu di PostgreSQL

Klausa OVER

  • Klausa OVER menandakan window function
  • Contoh: regional_timetable berisi date, times, id, delays, dan region
  • Jika tanpa PARTITION BY: seluruh tabel diperlakukan sebagai satu partisi
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|
Analisis Deret Waktu di PostgreSQL

Ayo berlatih!

Analisis Deret Waktu di PostgreSQL

Preparing Video For Download...