Dělení a okenní funkce

Time Series Analysis in PostgreSQL

Jasmin Ludolf

Content Developer, DataCamp

Dělení

  • Rozdělí velkou tabulku na menší podmnožiny (oddíly)
  • Užitečné při práci s velkými datovými sadami
  • Časová řada:
    • nová data každý den
    • dělení podle rozsahu dat

Ilustrace rozdělení větší tabulky na dva oddíly

Time Series Analysis in PostgreSQL

Rozsah

  • Hranice rozsahu:

    • dolní mez je zahrnuta
    • horní mez je vyloučena
  • Alternativa k rozsahu: dělení podle události nebo kategorie

Rozsah 1 : 2000–2010

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

Rozsah 2 : 2010–2020

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

Time Series Analysis in 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);
Time Series Analysis in PostgreSQL

Partition of

  • PARITION OF FOR VALUES FROM
  • timetable je dělená tabulka, rozdělená podle date_info metodou RANGE

 

CREATE TABLE timetable_y2020 PARTITION OF timetable
    FOR VALUES FROM ('2020-01-01') to ('2020-12-31');
Time Series Analysis in PostgreSQL

Okenní funkce

  • Zjednodušují běžné SQL dotazy
  • Vrací hodnotu pro každý řádek (může záviset na jiných řádcích)

 

  • Okno : množina řádků, na které funkce pracuje
  • Okenní funkce : funkce aplikovaná na toto okno
  • Agregační funkce jsou srovnávací, výsledek však není sloučen do jedné hodnoty
Time Series Analysis in PostgreSQL

Klauzule OVER

  • Klauzule OVER označuje okenní funkci
  • Příklad: regional_timetable – datum, časy, id, zpoždění a region
  • Bez PARTITION BY : okenní funkce pracuje s celou tabulkou jako jedním oddílem
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|
Time Series Analysis in PostgreSQL

Pojďme cvičit!

Time Series Analysis in PostgreSQL

Preparing Video For Download...