Č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.