Skip to content

Este repositorio contiene los proyectos de prueba para Ingenieros de Integración.

Notifications You must be signed in to change notification settings

ubiqua/integration-test

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 
 
 

Repository files navigation

Integration Enginer Test

Este repositorio contiene el proyecto de prueba para Ingenieros de Integración. El objetivo principal de este proyecto es simular una infraestructura y problem set similar al que vería un Ingeniero de Integración en Ubiqua.

El problema es el siguiente: dado un dataset en una base de datos de PostgreSQL, analizar el esquema, los tipos de campos y las particularidades de cada cliente en el dataset. Utilizando el proceso de ETL, leer la data de PostgreSQL, la tranformarla con Python y cargue la data en la base de datos de Mongo.

El problema también requiere un poco de conocimiento previo o investigación sobre configuración de MongoDB, sistemas POSIX (Linux/Unix/macOS), llaves de SSH, droplets de Digital Ocean, comandos SQL y manejo de bases de dato relaciones como PostgreSQL.

Pre-requisitos

  • Tener acceso a una instancia (Droplet) de Digital Ocean
    • Un Public/Private keyset para acceder a la instancia
    • Utilizar comando ssh -i path_to_private_key root@ipaddress
  • Acceso a la base de datos read-only de PostgreSQL

Objetivos de la prueba

  • Installar MongoDB localmente
  • Hacer un fork de este repo.
    • Clonar el fork en la instancia asignada.
    • Trabajar la solución en el fork.
  • La solución debe:
    • Cargar las órdenes de la base de datos de PostgreSQL y transformarlas a una colección de Mongo
    • Todas las órdenes se insertan sin duplicados, incluso cuando la solución se corre mútliples veces.
    • Incluir la información del producto
    • Product info joined from product table
    • Subtotal, Tax y Total se calculan para cada órden
    • La marca (brand) más popular se calcula para cada órden insertada
    • Considerar que is_promotion_day debe de ser true/false dependiendo en la fecha de la órden y el campo client promotion_date

Read Schema

Requiere investigación utilizando un tool como DBeaver para leer los esquemas de data.

Tables

  • Clients
  • Products
  • Orders
  • Order Items

Write schema

Order

  • uid
  • date_of_order
  • client_uid
  • client_name
  • client_address
  • latitude
  • longitude
  • status
  • subtotal
  • taxes
  • total
  • is_promotion_day
  • most_popular_brand
  • OrderItems:
    • uid
    • quantity
    • price
    • name
    • brand

About

Este repositorio contiene los proyectos de prueba para Ingenieros de Integración.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published