Často potřebujeme doplnit chybějící data v PostgreSQL vyplněním chybějících řádků pro tyto hodnoty data. Zde je návod, jak vyplnit chybějící data v PostgreSQL pomocí funkce create_series.
Jak vyplnit chybějící data v PostgreSQL pomocí create_series
Zde jsou kroky k vyplnění chybějících dat v PostgreSQL. K doplnění chybějících hodnot použijeme create_series v PostgreSQL.
Řekněme, že máte následující tabulku prodej(datum_objednávky,výprodej)
postgresql=# create table sales(order_date date,sale int);
postgresql=# insert into sales(order_date,sale) values('2020-04-01',212),
('2020-04-04',220),
('2020-04-05',120),
('2020-04-07',200),
('2020-04-08',222),
('2020-04-10',312),
('2020-04-11',225),
('2020-04-12',212);
postgresql=# select * from sales;
+------------+------+
| order_date | sale |
+------------+------+
| 2020-04-01 | 212 |
| 2020-04-04 | 220 |
| 2020-04-05 | 120 |
| 2020-04-07 | 200 |
| 2020-04-08 | 222 |
| 2020-04-10 | 312 |
| 2020-04-11 | 225 |
| 2020-04-12 | 212 |
+------------+------+
Bonusové čtení:Jak vypočítat medián v PostgreSQL
Jak můžete vidět v tabulce výše, chybí v ní hodnoty data, jako je 2., 3. duben atd.
Pokud se pokusíme vykreslit tato data do grafu, bude to vypadat nějak takto

Takový graf může být zavádějící, protože nezobrazuje mezery ve sloupcích pro chybějící data.
Bonusové čtení:Jak vypočítat klouzavý průměr v PostgreSQL
Abychom doplnili chybějící data v PostgreSQL, musíme vytvořit ‚pomocnou‘ tabulku datových řad, která obsahuje všechna data mezi minimálním a maximálním datem v naší tabulce, včetně chybějících hodnot data jako řádků. Připojíme se k této pomocné tabulce s našimi prodeji tabulka.
Ke generování tabulky datových řad použijeme v PostgreSQL create_series. generate_series Funkce automaticky generuje pokračující řadu čísel a dat, pokud zadáte minimální a maximální hodnoty pro vaši řadu.
Zde je příklad, kdy říkáme generation_series, aby vygenerovala datovou řadu mezi minimálním a maximálním datem v naší tabulce, včetně chybějících hodnot data jako řádků.
postgres=# SELECT generate_series(min(order_date), max(order_date), '1d')::date AS order_date
FROM sales;
order_date
------------
2020-04-01
2020-04-02
2020-04-03
2020-04-04
2020-04-05
2020-04-06
2020-04-07
2020-04-08
2020-04-09
2020-04-10
2020-04-11
2020-04-12
Bonusové čtení:Jak importovat soubor CSV v PostgreSQL
Dále provedeme LEVÉ spojení pomocné tabulky s prodejem k doplnění chybějících dat v PostgreSQL.
postgres=# SELECT x.order_date, t.sale
FROM (
SELECT generate_series(min(order_date), max(order_date), '1d')::date AS order_date
FROM sales
) x
LEFT JOIN sales t USING (order_date)
ORDER BY x.order_date;
order_date | sale
------------+------
2020-04-01 | 212
2020-04-02 |
2020-04-03 |
2020-04-04 | 220
2020-04-05 | 120
2020-04-06 |
2020-04-07 | 200
2020-04-08 | 222
2020-04-09 |
2020-04-10 | 312
2020-04-11 | 225
2020-04-12 | 212
Poté, co vyplníte chybějící data v PostgreSQL, můžete pomocí nástroje pro vytváření sestav vykreslit tato data na sloupcový graf nebo řídicí panel a sdílet je se svým týmem. Zde je příklad sloupcového grafu, který ukazuje denní tržby, vytvořený pomocí Ubiq.

Podívejte se na rozdíl ve 2 grafech!
Pokud chcete vytvářet grafy, dashboardy a sestavy z databáze PostgreSQL, můžete zkusit Ubiq. Nabízíme 14denní bezplatnou zkušební verzi.