A menudo, necesitamos completar las fechas que faltan en PostgreSQL completando las filas que faltan para esos valores de fecha. Aquí se explica cómo completar las fechas que faltan en PostgreSQL usando la función generate_series.
Cómo completar fechas faltantes en PostgreSQL usando generate_series
Estos son los pasos para completar las fechas que faltan en PostgreSQL. Usaremos generar_series en PostgreSQL para completar los valores que faltan.
Digamos que tiene la siguiente tabla 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 | +------------+------+
Lectura adicional:Cómo calcular la mediana en PostgreSQL
Como puede ver en la tabla anterior, faltan valores de fecha como 2, 3 de abril, etc.
Si tratamos de trazar estos datos en un gráfico, se verá algo así como
Tal gráfico puede ser engañoso ya que no muestra los espacios entre columnas para las fechas que faltan.
Lectura adicional:Cómo calcular la media móvil en PostgreSQL
Para completar los datos que faltan en PostgreSQL, necesitamos crear una tabla de series de fechas de "ayuda" que contenga todas las fechas entre las fechas mínimas y máximas en nuestra tabla, incluidos los valores de fechas que faltan como filas. Nos uniremos a esta mesa auxiliar con nuestras ventas mesa.
Usaremos generar_series en PostgreSQL para generar una tabla de series de fechas. generar_series La función genera automáticamente una serie continua de números y fechas, si proporciona los valores mínimo y máximo para su serie.
Aquí hay un ejemplo, donde le decimos a generate_series que genere una serie de fechas entre las fechas mínimas y máximas en nuestra tabla, incluidos los valores de fecha faltantes como filas.
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
Lectura adicional:Cómo importar un archivo CSV en PostgreSQL
A continuación, hacemos una combinación IZQUIERDA de la tabla auxiliar con ventas para completar las fechas que faltan en 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
Después de completar las fechas que faltan en PostgreSQL, puede usar una herramienta de informes para trazar estos datos en un gráfico de barras o tablero y compartirlos con su equipo. Este es un ejemplo de un gráfico de barras que muestra las ventas diarias, creado con Ubiq.
¡Vea la diferencia en 2 gráficos!
Si desea crear gráficos, paneles e informes a partir de la base de datos PostgreSQL, puede probar Ubiq. Ofrecemos una prueba gratuita de 14 días.