Partycjonowanie i funkcje okna

Analiza szeregów czasowych w PostgreSQL

Jasmin Ludolf

Content Developer, DataCamp

Partycjonowanie

  • Podział dużej tabeli na mniejsze podzbiory (partycje)
  • Przydatne przy pracy z dużymi zbiorami danych
  • Dane szeregów czasowych:
    • nowe dane każdego dnia
    • partycjonowanie według zakresów dat

Ilustracja podziału dużej tabeli na dwa podzbiory

Analiza szeregów czasowych w PostgreSQL

Zakres

  • Granice zakresu:

    • dolna granica włącznie
    • górna granica wyłącznie
  • Alternatywa: partycjonowanie według zdarzenia lub kategorii

Zakres 1: 2000–2010

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

Zakres 2: 2010–2020

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

Analiza szeregów czasowych w 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);
Analiza szeregów czasowych w PostgreSQL

Partition of

  • PARITION OF FOR VALUES FROM
  • timetable to tabela partycjonowana według kolumny date_info metodą RANGE

 

CREATE TABLE timetable_y2020 PARTITION OF timetable
    FOR VALUES FROM ('2020-01-01') to ('2020-12-31');
Analiza szeregów czasowych w PostgreSQL

Funkcje okna

  • Upraszczają standardowe zapytania SQL
  • Zwracają wartość dla każdego wiersza (może zależeć od innych wierszy)

 

  • Okno: zbiór wierszy, na których działa funkcja
  • Funkcja okna: funkcja stosowana na tym zbiorze wierszy
  • Funkcje agregujące są porównawcze, ale wynik nie jest grupowany do jednej wartości
Analiza szeregów czasowych w PostgreSQL

Klauzula OVER

  • Klauzula OVER wskazuje funkcję okna
  • Przykład: tabela regional_timetable — daty, godziny, id, opóźnienia, region
  • Bez PARTITION BY: funkcja okna traktuje całą tabelę jako jedną partycję
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|
Analiza szeregów czasowych w PostgreSQL

Czas na ćwiczenia!

Analiza szeregów czasowych w PostgreSQL

Preparing Video For Download...