Duvan Pinzón Díaz Documentaci ó n MELI Chal lenge Contenido Consideraciones ................................ ................................ ................................ ................................ ........ 2 Primera parte – SQL ................................ ................................ ................................ ................................ .. 2 1. Herramientas ................................ ................................ ................................ ................................ 2 2. Modelo Entidad - Relación ................................ ................................ ................................ .............. 2 3. Creación de BD ................................ ................................ ................................ .............................. 2 4. Tareas ................................ ................................ ................................ ................................ ............ 4 Segunda Parte – APIs ................................ ................................ ................................ ................................ 6 1. Herramientas ................................ ................................ ................................ ................................ 6 2. Tareas ................................ ................................ ................................ ................................ ............ 6 3. Característica s relevantes ................................ ................................ ................................ ............. 6 4. Conclusión ................................ ................................ ................................ ................................ ..... 6 Duvan Pinzón Díaz Documentaci ó n MELI Chal lenge C onsideraciones En este documento se encuentra la documentación de las herramientas y procesos llevados a cabo con el fin de cumplir los requ erimientos exigidos por el challenge. Adicionalmente, junto a este documento , hay dos carpetas : la de Entrega que contiene explícitamente lo solicitado por el challe nge y una de Anexos que contiene la información ad icional para poder replicar la base de datos usada para solucionar los requ erimientos de la primer a parte del challenge, así como el ar chivo de Jupyter Note book usado para la segunda parte. Primera par te – SQL 1. Herramientas Base de datos: MySQL 8.0.26 Base de datos herramienta visual: MySQL Workbench 8.0 Lenguaje : SQL 2. Modelo Ent idad - Relación 3. Creación de BD En la carpeta de anexos para la primera parte se encuentran los archivos necesarios par a la creación de la base de datos y la ingesta de datos de prueba, a continuación, se describe cada uno de los archivos y su función, así como su orden de ejecución Para empezar, se debe hacer la creación las 4 tabla s, para esto usamos e l script create_tables.sql : Duvan Pinzón Díaz Una vez creadas la s tablas y el schema, se hace la inserción de datos de prueba, para esto hay una subcarpeta llamada inserts la cual contiene 3 scripts de in serción (Categorías, ítems y Cust omers) y un stored procedure para generar ventas ( fill _orders .sql ) el cual usa como parámetro la cantidad de ventas que se quieren ingresa r y su objetivo es poblar la tabla Order con datos aleatori os de customers , ítems , cantidad y fechas El orden de inserción es: C ategor y>Customers>Item>Order. Duvan Pinzón Díaz 4. Tareas • Listar los usuarios que cumplan años el día de hoy cuya cantidad de ventas realizadas en enero 2020 sea superior a 1500 Para el desarrollo de este query se unieron las tablas orders , item y cu stomer , se agruparon l as orders por medio de un count y se filtró por mes - dí a (cumpleaños) y año - me s para obtener únicamente las ventas de enero 2020. U na vez agrupa dos, se usó este resultado como insumo para otro query que trae los resultados cuyo count sea mayor a 1500. C on el fin d e probar el query se ejecutó a me nor escala, trayendo lo s resulta dos cuyo count sea mayor a 150. Adicionalm ente se tomó “ ventas ” como cantidad de orders asociadas a ese selller. E l query resultante se encuentra en el archivo respuestas_negocio.sql • Por cada mes del 2020, se solicita el top 5 de usuarios que más vendieron ( $) en la categoría Celulares. Se requiere el mes y año de análisis, nombre y apellido del vendedor, cantidad de ventas realizadas, cantidad de productos vendidos y el monto total transaccionado En este query se usó gran parte del query anterior , sin embargo, se filtró únicamente por año de la order y por category . La agrupación se hizo por medio de un count (ventas) y un par de sum (cantidad de ítems y total en dinero vendido). Una vez agrupado , se usó este resultado como insumo para otro query encargado de traer únicamente el top 5 de vendedores para cada mes , ordenar los resultados y unirlos p or medio de UNION ALL ( no se necesita verificación de duplicados) para obtener el resultado final. E l query resultante se encuentra en el archivo respuestas_negocio.sql Duvan Pinzón Díaz • Se solicita poblar una nueva tabla con el precio y estado de los Ítems a fin del día. Tener en cuenta que debe ser reprocesable. Vale resaltar q ue en la tabla Item, vamos a tener únicamente el último estado informado por la PK definida Para la realización de este punto se asumió que el requerimiento era crear una tabla temporal úni camente con las columnas especificad a s , esto con el fin de usarla en futuros procedimientos sin afectar la tabla original item P ara esto se creó un stored procedure el cual crea una tabla temporal llam a da temp_item y se pobló con las columnas r equerida s. P ara saber si e l item estaba activo se creó la columna is_active la cual se llena teniendo en cuenta la end_date de la tabla item y la fecha actual E l store d procedure resultante se encuentra en el archivo fill_ items .sql Duvan Pinzón Díaz Segunda Parte – APIs 1. Herramientas IDE : Jupyter Not ebook Lenguaje : Python Librerías: json, requests, urllib, re, pandas 2. T areas • Barrer una lista de más de 150 ítems ids en el servicio público , p or cada resultado, realizar el c orrespondiente GET por Item_Id al recurso público y e scribir los resultados en un archivo plano delimitado por comas, desnormalizando el JSON obtenido en el paso anterior, en tantos campos como sea necesario para guardar las variables que te interesen mode lar Se creó un script en Python e n el cual se busca y se obtiene la información para diferentes dispositivos usados para streaming con diferentes m a r c as y modelos , estos son: Fire TV Stick Lite Xiaomi Mi Box S Apple TV 4k Fire TV Stick 4K Google Chromecast 3 Roku Streaming Stick Fire TV Cube Google Chromecast Ultra Nokia Streaming Box Xiaomi Mi TV St ick Engel EN1015K Nvidia SHIELD TV Pro Adicionalmente se barrieron y se r ealizó una selección de variables de interés, estas son: query id ti tle p rice c urrency_ id s old_ qu antity condition accepts_mercadopago seller_address/city/name seller_address/state/name seller_address/country/name shipping/free_shipping category_id domain_id tags Finalmente, se almacena esta información relevante en un dataframe y se exporta a CSV. 3. Car acterísticas relevantes • Se verifica que el resultado contenga todas las palabras del criterio de búsqueda, con el fin de realizar una mejor categorización • S e filtra por categoría, con el fin de excl uir resultados no relacionados. 4. Conclusión Al realizar el análisis de la información , se identificó que el servicio Sites trae la información requerida sin necesidad de usar el servicio Items , si se realiza la impl ementación usando únicamente Sites se aumentaría el rendimiento del proceso , si n embargo, en pro del ejercicio se realiz ó la implementación usando el proceso sugerido por el Challenge.