Souvent, nous devons remplir les dates manquantes dans PostgreSQL en remplissant les lignes manquantes pour ces valeurs de date. Voici comment remplir les dates manquantes dans PostgreSQL en utilisant la fonction generate_series.
Comment remplir les dates manquantes dans PostgreSQL à l'aide de generate_series
Voici les étapes pour remplir les dates manquantes dans PostgreSQL. Nous utiliserons generate_series dans PostgreSQL pour remplir les valeurs manquantes.
Disons que vous avez le tableau suivant 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 | +------------+------+
Lecture bonus :Comment calculer la médiane dans PostgreSQL
Comme vous pouvez le voir dans le tableau ci-dessus, il manque des valeurs de date telles que le 2, le 3 avril, etc.
Si nous essayons de tracer ces données sur un graphique, cela ressemblera à quelque chose comme
Un tel graphique peut être trompeur car il ne montre pas les espaces vides pour les dates manquantes.
Lecture bonus :Comment calculer la moyenne mobile dans PostgreSQL
Pour remplir les données manquantes dans PostgreSQL, nous devons créer une table de séries de dates "helper" qui contient toutes les dates entre les dates minimales et maximales dans notre table, y compris les valeurs de date manquantes sous forme de lignes. Nous rejoindrons cette table d'assistance avec nos ventes tableau.
Nous utiliserons generate_series dans PostgreSQL pour générer une table de séries de dates. generate_series La fonction génère automatiquement une série continue de nombres et de dates, si vous fournissez les valeurs min et max pour votre série.
Voici un exemple, où nous disons à generate_series de générer une série de dates entre les dates minimales et maximales dans notre table, y compris les valeurs de date manquantes sous forme de lignes.
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
Lecture bonus :Comment importer un fichier CSV dans PostgreSQL
Ensuite, nous effectuons une jointure GAUCHE de la table d'assistance avec ventes pour remplir les dates manquantes dans 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
Après avoir rempli les dates manquantes dans PostgreSQL, vous pouvez utiliser un outil de création de rapports pour tracer ces données sur un graphique à barres ou un tableau de bord et les partager avec votre équipe. Voici un exemple de graphique à barres illustrant les ventes quotidiennes, créé à l'aide d'Ubiq.
Voyez la différence dans 2 graphiques !
Si vous souhaitez créer des graphiques, des tableaux de bord et des rapports à partir de la base de données PostgreSQL, vous pouvez essayer Ubiq. Nous offrons un essai gratuit de 14 jours.