Oft müssen wir fehlende Daten in PostgreSQL füllen, indem wir fehlende Zeilen für diese Datumswerte füllen. So füllen Sie fehlende Daten in PostgreSQL mit der Funktion generate_series aus.
Wie man fehlende Daten in PostgreSQL mit generate_series füllt
Hier sind die Schritte zum Ausfüllen fehlender Daten in PostgreSQL. Wir werden generate_series in PostgreSQL verwenden, um fehlende Werte zu füllen.
Nehmen wir an, Sie haben die folgende Tabelle sales(order_date,sale)
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 | +------------+------+
Bonus-Lesetext:So berechnen Sie den Median in PostgreSQL
Wie Sie in der obigen Tabelle sehen können, fehlen darin Datumswerte wie 2., 3. April usw.
Wenn wir versuchen, diese Daten in einem Diagramm darzustellen, sieht es in etwa so aus
Ein solches Diagramm kann irreführend sein, da es keine Spaltenlücken für fehlende Daten anzeigt.
Bonuslektüre:So berechnen Sie den gleitenden Durchschnitt in PostgreSQL
Um fehlende Daten in PostgreSQL zu füllen, müssen wir eine „Hilfs“-Datumsreihentabelle erstellen, die alle Daten zwischen Mindest- und Höchstdaten in unserer Tabelle enthält, einschließlich fehlender Datumswerte als Zeilen. Wir werden mit unseren Verkäufen an diesem Helfertisch teilnehmen Tabelle.
Wir werden generate_series in PostgreSQL verwenden, um eine Datumsreihentabelle zu generieren. generate_series Die Funktion generiert automatisch eine fortlaufende Reihe von Zahlen und Daten, wenn Sie die Mindest- und Höchstwerte für Ihre Reihe angeben.
Hier ist ein Beispiel, in dem wir generate_series anweisen, eine Datumsreihe zwischen minimalen und maximalen Datumsangaben in unserer Tabelle zu generieren, einschließlich fehlender Datumswerte als Zeilen.
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
Bonuslektüre:So importieren Sie eine CSV-Datei in PostgreSQL
Als Nächstes führen wir einen LEFT Join der Hilfstabelle mit Verkäufen durch um fehlende Daten in PostgreSQL zu füllen.
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
Nachdem Sie fehlende Daten in PostgreSQL ausgefüllt haben, können Sie diese Daten mit einem Berichterstellungstool in einem Balkendiagramm oder Dashboard darstellen und mit Ihrem Team teilen. Hier ist ein Beispiel für ein Balkendiagramm, das die täglichen Verkäufe zeigt und mit Ubiq erstellt wurde.
Sehen Sie den Unterschied in 2 Diagrammen!
Wenn Sie Diagramme, Dashboards und Berichte aus der PostgreSQL-Datenbank erstellen möchten, können Sie Ubiq ausprobieren. Wir bieten eine 14-tägige kostenlose Testversion an.