Vous êtes sur la page 1sur 5

PRUEBA INGENIERO DE DATOS PARTE 1

Preguntas generales:

1. Explique la principal diferencia entre una Base de Datos relacional y una Columnar.

Una BD Relacional esta optimizada para el almacenamiento de filas de datos es decir mas orientado
a la transaccionalidad, mientras que la BD Columnar esta optimizada para realizar consultas y por
ende una recuperacion mas rapida de datos, es decir mas orientado a la analitica.

2. Explique con sus palabras las diferencias entre Cassandra y Hbase.

En terminos de infraestrcutura, HBase esta basado en el framework Hadoop, lo que implica el


concepto de un maestro, data nodes y name nodes, mientras que en Cassandra por lo general esta
basada en DynamoDB (amazon) lo que implica una estructura de un unico tipo de nodo.

Cassandra es una tecnologia autosuficiente para almacenamiento y gestion de datos mientras que
HBase no lo es. El punto debil de Cassandra esta en la consistencia de datos mientras que el de
HBase es la disponibilidad de datos.

HBase esta generalmente diseñado en los casos donde se disponen de data lakes en los que no se
suele utilizar aplicaciones web o moviles mientras que en Cassandra su caracteristica es la alta
disponibilidad y el rendimiento.

3. Explique que es MapReduce y sus ventajas

MapReduce es un modelo de proramacion funcional que esta diseñado para procesar grandes
volumenes de datos de forma paralela. No hay dependencias con los datos, ya que no se require que
un registro en un set de datos deba ser procesado antes que otro; ademas evita cambios de estado
como tambien datos mutables.

MapReduce esta basado en parejas de llave-valor, este modelo cuenta con tres trabajos: el “Map”,
que consiste en la creacion de parejas a partir de pedazos(chunks), luego esta el “Shuffle-Short” que
se encarga de la organizacion de instancias por llave y finalmente esta el “Reduce” que ejecuta la
operacion sobre las instancias que tengan la misma llave.

4. Cuales son las ventajas de usar Spark comparado con usar MapReduce convencional
Principalmente el procesamiento, ya que Spark puede hacerlo en memoria, mientras que
MapReduce realiza desde la lectura hasta la escritura en el disco lo que finalmente hace que Spark
brinde un procesamiento mas rapido de datos.
Si se tiene que realizar procesamiento iterativo, es decir, realizar la misma tarea una y otra vez,
Spark tiene ventaja ya que este esta basado en RDD, lo que habilita multiples operaciones de mapeo
en memoria comparado a MapReduce que tiene que escribir resutaldos provisionales en disco.
5. Se tiene la tabla XXXX con los siguientes campos:

Campo Tipo de dato

Year Number

Month Number

Type Varchar

La columna Type puede tomar los siguientes valores:


DevOps, QA, Analista, Desarrollador, PMO
Se requiere un reporte de la siguiente manera:

Annio Mes DevOps QA Analista Desarrollador PMO


2012 02 20 30 13 12 8

Este proceso se logra transponiendo la tabla.


Enviar la consulta necesaria para lograr el reporte.

SELECT *
FROM (
SELECT
"Year" as "Annio", "Month" as "Mes", "Type"
FROM XXXXX
) as s
PIVOT
(
COUNT("Type")
FOR "Type" IN (DevOps, QA, Analista, Desarrollador, PMO)
)AS pvt
Preguntas MER:

1. Usando el diagrama anterior envíe las siguientes consultas:


a. Cuente el número de empleados por departamento ordenados de mayor a menor

SELECT D.DEPARTMENT_NAME AS DEPARTAMENTO,


COUNT(DISTINCT EMPLOYEE_ID) AS CANT_EMPLEADOS
FROM EMPLOYEES E
INNER JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
ORDER BY 2 DESC

b. Salario promedio por pais

SELECT C.COUNTRY_NAME AS PAIS,


AVG(E.SALARY) AS SALARIO_PROMEDIO
FROM EMPLOYEES E
INNER JOIN DEPARTMENTS D
ON E.DEPARTMENT_ID = D.DEPARTMENT_ID
INNER JOIN LOCATIONS L
ON D.LOCATION_ID = L.LOCATION_ID
INNER JOIN COUNTRIES C
ON L.COUNTRY_ID = C.COUNTRY_ID
GROUP BY C.COUNTRY_NAME

c. Detalle de empleados con el mínimo y máximo salario

SELECT E.FIRST_NAME,
E.LAST_NAME,
E.EMAIL,
E.PHONE_NUMBER,
E1.SALARY AS MAX_SALARY,
E1.JOB_ID AS JOB_MAX,
E2.SALARY AS MIN_SALARY,
E2.JOB_ID AS JOB_MIN
FROM EMPLOYEES E
INNER JOIN (
SELECT * FROM (
SELECT EMPLOYEE_ID,
JOB_ID,
SALARY,
ROW_NUMBER() OVER (PARTITION BY EMPLOYEE_ID ORDER
BY SALARY DESC) AS FMAX
FROM EMPLOYEES) AS EMAX
WHERE FMAX = 1
) E1
ON E.EMPLOYEE_ID = E1. EMPLOYEE_ID
INNER JOIN (
SELECT * FROM (
SELECT EMPLOYEE_ID,
JOB_ID,
SALARY,
ROW_NUMBER() OVER (PARTITION BY EMPLOYEE_ID ORDER
BY SALARY ASC) AS FMIN
FROM EMPLOYEES) AS EMIN
WHERE FMIN = 1
) E2
ON E.EMPLOYEE_ID = E2.EMPLOYEE_ID

2. Que es una dimensión degenerada

Son aquellas que salen directamente como columnas en la tabla de hechos, ya que para estos casos
no tiene sentido diseñar una dimension con un unico atributo.

3. Explique las diferencias entre un modelo en estrella y uno en constelación

Un modelo Estrella esta conformado por una unica tabla de hechos y varias dimensiones asociadas
a dicha tabla de hechos, cada dimension esta conformada en una unica tabla fisica es decir que sus
jerarquia estan desnormalizadas; el caso del modelo constelacion es la combinacion de varios
modelos estrella y copos de nieve, es decir se cuenta con mas de una tabla de hechos que comparten
una o varias dimensiones, este tipo de modelo esta normalizado para eliminar redundancias de las
dimensiones
4. Explique con un ejemplo como implementar SCD en una bodega de datos
Se desea contar con una dimension asociada a los planes de telefonia movil, dichos planes cambian
su precio (cargo fijo mensual) con el tiemp, por lo que es necesario implementar una dimension
lentamente cambiante de tipo dos que me permita preservar la historia de los planes, donde el
registro expira a medida que uno nuevo se inserta.
Lo anterior se lleva acabo de la siguiente manera:
- Dicha dimension tendra los siguientes campos:
o SK_PLAN
o COD_PLAN (Llave de negocio del plan)
o DESC_PLAN (Descripcion del plan)
o CFM_PLAN (Cargo fijo mensual del plan)
o FEC_INI_VIGENCIA (Fecha de inicio de vigencia plan)
o FEC_FIN_VIGENCIA (Fecha de fin de vigencia del plan)
o MC_ACTUAL (Marca actual del plan 1= Activo, 0=Inactivo)
o FEC_CARGUE (Fecha de cargue del registro en DWH)
Ej: Se tiene el plan “A” asociado a un plan de datos de 2GB con un CFM de 30000 COP y fue
lanzado el 01/01/2019.

SK_PLAN COD_PLAN DESC_PLAN CFM_PLAN FEC_INI FEC_FIN MC_ACTUA


1A DATOS 2GB 30000 01/01/2019 01/01/1900 1

Luego dicho plan el 04/02/2019 le aumentaron su CFM a 33000 COP, lo que entonces se
visualizara de la siguiente forma en la dimension

SK_PLAN COD_PLAN DESC_PLAN CFM_PLAN FEC_INI FEC_FIN MC_ACTUA


1A DATOS 2GB 30000 01/01/2019 04/02/2019 0
2A DATOS 2GB 33000 04/02/2019 01/01/1900 1

Como se puede notar se actualiza la fecha final y la marca actual del registro inicial y ademas se
inserto el nuevo registro vigente al plan en mencion.

Vous aimerez peut-être aussi