Proceso de importación de datos a postgresql para el Reto 5 de FP20Analytics

El día de hoy presentaremos el proceso en el cual manejaremos el reto numero 5 de fp20analytics.

Por acá comparto el link para los que desean acceder: https://fp20analytics.com/challenge

 

En este post se presenta el proceso para manejar el reto número 5 de fp20analytics, el cual implica crear un modelo de datos en PostgreSQL a partir de un archivo XLSX y realizar la importación de los datos.

Se detalla el proceso de creación de una tabla de aterrizaje en PostgreSQL y se proporciona el código de Python para importar los datos del archivo XLSX a la tabla.

También se describe el proceso de creación de la tabla para la segunda hoja del archivo XLSX y se proporciona el código correspondiente para importar los datos a la tabla.

 

Para este reto tenemos un fichero único de extensión XLSX, en cual visualizamos los datos que deseamos.

Cuál es el input en el cual trabajaremos:

De tipo XLSX en el cual manejaremos llamado Business Intel_Phone Sales_Prep with Calendar Table.

Don crearemos este modelo de datos en ese caso en PostgreSQL.

 

Lo crearemos en PostgreSQL, dado que con este podemos incrementar nuestras habilidades en SQL, ahora debemos crear el importador en postgresql para llevar la data hacia la base de datos y realizar la limpieza en ella.

 

Paso 1) Lo primero que realizaremos será acceder al editor de query dentro de la BBDD que deseamos utilizar para crear nuestra tabla de tipo stage o aterrizaje

Paso 2) Analizaremos el tipo de columna inicial que tiene cada el fichero para así crear las columnas en postgres, debemos considerar en el cual debemos controlar el tamaño de los caracteres en los cuales insertaremos la data , en base al máximo de cada uno crearemos las columnas.

La formula utilizada para obtener el máximo de caracteres de  las columnas  en Excel es MAX(largo(Columna))  este devolverá el numero de caracteres máximo de cada fila lo ordenas de mayor a menor y tienes el tamaño maximo a colocar en el script de postgresql.

Paso 3) Script para crear la tabla  dentro de postgres , recordemos que esta será la tabla de aterrizaje para el input externo no es la tabla definitiva.

Create table stage

(

Date_original date,

Country varchar(14),

Distribuitor varchar(14),

Brand varchar(8),

Operators varchar(8),

Unit_Cost int,

Amount               int,

Unit_Price int    ,

Sales int

)

Acá encontraras en GitHub el código completo:

https://github.com/vicente2121/Importadores_reto_5_fpchallenge/blob/main/Tabla%20stage%20hoja%20dos

select * from stage

Paso 4) Importador en Python para  insertar los datos a la tabla creada, recordemos debemos crear el script en Python utilizando las librerías que explicaremos y a continuación el código creado.
Antes de crear el código procedo a realizar un breve explicación sobre que hace cada parte de este script
Python

Copy code

import pandas as pd

import psycopg2

Importa dos bibliotecas de Python, pandas y psycopg2. La biblioteca pandas se utiliza para manipular y trabajar con datos en formato tabular. La biblioteca psycopg2 se utiliza para conectarse y trabajar con bases de datos PostgreSQL.

python

Copy code

conn = psycopg2.connect(database=»Prueba_dos», user=»postgres», password=»contraseña», host=» «, port=»5432»)

cur = conn.cursor()

Crea una conexión a la base de datos de PostgreSQL utilizando los parámetros proporcionados: la base de datos a la que se desea conectar («Prueba_dos»), el usuario con el que se desea conectar («postgres»), la contraseña para el usuario («contraseña»), el host (normalmente es la dirección IP del servidor donde se encuentra la base de datos) y el puerto que se va a utilizar para conectarse (por defecto, es el puerto 5432).

Crea un cursor, que es un objeto que se utiliza para ejecutar comandos en la base de datos.

python

Copy code

df = pd.read_excel(«C:\\Business Intel_Phone Sales_Prep with Calendar Table.xlsx»)

Lee el archivo de Excel «Business Intel_Phone Sales_Prep with Calendar Table.xlsx» que se encuentra en la ubicación «C:\» y lo convierte en un DataFrame de Pandas. Un DataFrame es una estructura de datos de dos dimensiones que se utiliza para trabajar con datos en formato tabular.

python

Copy code

tuples = [tuple(x) for x in df.to_numpy()]

Convierte el DataFrame de Pandas en una lista de tuplas. Cada tupla representa una fila en el archivo de Excel. La función «to_numpy()» se utiliza para convertir el DataFrame en una matriz NumPy y luego la lista de comprensión se utiliza para crear una lista de tuplas a partir de la matriz.

python

Copy code

values = «,».join([«%s»] * len(tuples))

insert_stmt = f»INSERT INTO stage (Date_original, Country, Distribuitor,Brand,Operators,Unit_Cost,Amount,Unit_Price,Sales) VALUES {values}»

Crea una cadena de inserción de SQL. La cadena de inserción es una cadena de texto que especifica qué tabla se va a insertar y los valores que se van a insertar en la tabla. La tabla se llama «stage» y los nombres de las columnas son «Date_original», «Country», «Distribuitor», «Brand», «Operators», «Unit_Cost», «Amount», «Unit_Price» y «Sales». La sintaxis «{values}» se utiliza para indicar que los valores se van a insertar en la tabla posteriormente. La variable «values» contiene una cadena que especifica el número de valores que se van a insertar en la tabla.

python

Copy code

cur.execute(insert_stmt, tuples)

conn.commit()

Ejecuta la consulta SQL utilizando el cursor «cur» y los parámetros «insert_stmt» y «tuples». La función «execute()» se utiliza para ejecutar la consulta SQL. Los valores de las tuplas se insertan en la tabla utilizando los parámetros. La función «commit()» se utiliza para confirmar los cambios en la base de datos.

python

Copy code

cur.close()

conn.close()

Cierra la conexión y el cursor para liberar los recursos. La función «close()» se utiliza para cerrar tanto el cursor como la conexión.

Acá en GitHub dejo el código del importador completo https://github.com/vicente2121/Importadores_reto_5_fpchallenge/tree/main

 

Paso 5) Ahora Pasamos   para la creación de la tabla  para la segunda hoja de nuestro fichero en Excel que es fechas, lo primero será ver las dimensiones y el tamaño de las columna  con texto aplicamos el mismo código visto

La formula utilizada para obtener el máximo de caracteres de  las columnas  en Excel es MAX(largo(Columna))  este devolverá el numero de caracteres máximo de cada fila lo ordenas de mayor a menor y tienes el tamaño maximo a colocar en el script de postgresql.

 

Paso 6) Creamos la tabla para la segunda hoja , recordemos son tablas de aterrizaje para luego hacer las transformaciones y pasarlo a tablas de hechos y dimensiones en cada caso.

Create table dates

(

Year int,

Quarter int,

Month   int,

Month_Name varchar(3),

Month_Year varchar(8),

Week_Day          int,

Day_Name varchar(3),

Week_Number  int,

Quater_Q            varchar(2),

Dates date

)

Acá encontraras en GitHub el código completo: https://github.com/vicente2121/Importadores_reto_5_fpchallenge/blob/main/Tabla%20stage%20codigo%20postgresql

Paso 7)  Por ultimo pasamos a crear el segundo  script para Python y el nuevo importador pero ahora leyendo la segunda hoja de nuestro input o fichero, y claro está cambiando las nueva tabla y sus campos

import pandas as pd

import psycopg2

# Conectarse a la base de datos

conn = psycopg2.connect(database=»Prueba_dos», user=»usuario de tu bbdd», password=»contraseña de tu bbdd», host=»localhost», port=»5432″)

cur = conn.cursor()

# Leer el archivo de Excel en un dataframe de pandas

df = pd.read_excel(«C:\\Business Intel_Phone Sales_Prep with Calendar Table.xlsx»,sheet_name=1)

# Convertir el dataframe de pandas en una lista de tuplas

tuples = [tuple(x) for x in df.to_numpy()]

# Crear una cadena de inserción de SQL

values = «,».join([«%s»] * len(tuples))

insert_stmt = f»INSERT INTO dates (Year, Quarter, Month,Month_Name,Month_Year,Week_Day,Day_Name,Week_Number,Quater_Q,Dates) VALUES {values}»

# Insertar las tuplas en la tabla de la base de datos

cur.execute(insert_stmt, tuples)

conn.commit()

# Cerrar la conexión

cur.close()

conn.close()

 

Acá encontraras en GitHub el código completo https://github.com/vicente2121/Importadores_reto_5_fpchallenge/tree/main

Con estos pasos tenemos el fichero con sus dos hojas en dos tablas de aterrizaje para poder empezar a modelar los datos.

 

La importación de datos son procesos esenciales en la creación de modelos de datos. Con este post, se presenta una forma de manejar estos procesos utilizando PostgreSQL y Python.

El proceso detallado en este post puede servir como guía para aquellos que necesitan crear modelos de datos a partir de archivos XLSX y desean utilizar herramientas como PostgreSQL y Python para llevar a cabo este proceso.

Al seguir estos pasos, se puede obtener una tabla de aterrizajeo para empezar a  limpiar y  ser utilizada para crear el  modelado de datos.

 

Vicente Antonio Juan Magallanes

Business Intelligence Technical.

 

Perfil linkedin.

 

Loading

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *