Data Engineer
¿Qué índices conoces en PostgreSQL?
¿Trabajaste con las vitrinas de datos (capa DWH)?
¿Has tenido que trabajar directamente con Spark? ¿Cuál es su desventaja?
La tabla notifications contiene un campo status, en el que los valores son: 'sent', 'delivered', 'read'. ¿Cuál de las consultas es correcta? select * from notifications where status like '%sent%' order by created_at desc limit 5 select * from notifications where status = 'read' order by created_at desc limit 5 select * from notifications order by status desc limit 5 select * from notifications where status not in ('sent', 'delivered') order by created_at asc limit 5 select * from notifications where status in ('sent', 'delivered') order by created_at desc limit 5
¿Cómo se procesan los datos actualmente? Si están en diferentes formatos, ¿cómo se normalizan y se llevan a una forma unificada?
¿Qué operación realizó el comando? - Ejecutó git revert en el commit con config.yaml - Ejecutó git filter-branch --index-filter "git rm --cached config.yaml" -- --all - Ejecutó git rebase -i eliminando los commits que contenían cambios en el archivo - Ejecutó git commit --amend y git push --force - Ejecutó git cherry-pick para crear una nueva rama sin config.yaml
¿Qué es una CTE (Expresión de Tabla Común)?
¿Con qué frecuencia se calculaban las vitrinas? ¿Era un cálculo incremental o completo?
¿Quizás tienes experiencia en el campo de Data Science, trabajando con modelos o estadísticas?
Informe para la empresa logística Eres un analista de una empresa logística que lleva el registro de operaciones en los almacenes. Necesitas elaborar un informe sobre la eficiencia de cada almacén. Para cada almacén, calcula: • cantidad total de operaciones (count_operations); • cantidad total de productos procesados en el almacén (sum_quantity); • tiempo medio de procesamiento de la operación (avg_processing_time), considerando solo las operaciones con tiempo especificado (no NULL), redondeado al número entero más cercano; • cantidad máxima y mínima de productos procesados en una sola operación (max_quantity, min_quantity); • cantidad de operaciones de cada tipo («pago», «envío», «traslado») en columnas separadas: supply_operations, shipment_operations, transfer_operations. Filtra los almacenes cuya cantidad total de operaciones sea mayor a 2 y el tiempo medio de procesamiento no supere los 60 minutos. Ordena el resultado por ID del almacén en orden ascendente. Formato de entrada Tabla operations: • operation_id (int) — identificador único de la operación • warehouse_id (int) — identificador del almacén • operation_type (text) — tipo de operación: «pago», «envío», «traslado»
Dado una cadena order que especifica el orden deseado de los caracteres. Se requiere reordenar los caracteres en la cadena unsorted_str para que el orden sea coherente con la cadena order. Ambas cadenas consisten en caracteres del alfabeto inglés en minúscula, todos los caracteres en order son diferentes. El orden de los caracteres en unsorted_str se llama coherente con la cadena order, si de que el carácter x aparece antes que el carácter y en order, se deduce que cualquier aparición de x en unsorted_str debe estar antes que cualquier aparición de y. Es posible que en order no haya caracteres de unsorted_str y viceversa. Devuelve cualquiera de las permutaciones permitidas. unsorted_str = "abcd" order = "cba" respuesta = "dcba" ("cdba", "cbda", "cbad") def CustomSort(unsorted_str: str, order: str) -> str: # código aquí
¿Cómo dividir la consulta en etapas? ¿Qué hacemos para ello?
Informe para la empresa logística Eres un analista de una empresa logística que lleva el registro de operaciones en los almacenes. Necesitas elaborar un informe sobre la eficiencia de cada almacén. Para cada almacén, calcula: • cantidad total de operaciones (count_operations); • cantidad total de productos procesados en el almacén (sum_quantity); • tiempo medio de procesamiento de la operación (avg_processing_time), considerando solo operaciones con tiempo especificado (no NULL), redondeado al número entero más cercano; • cantidad máxima y mínima de productos procesados en una sola operación (max_quantity, min_quantity); • cantidad de operaciones de cada tipo («entrega», «envío», «traslado») en columnas separadas: supply_operations, shipment_operations, transfer_operations. Filtra los almacenes cuya cantidad total de operaciones sea mayor a 2 y el tiempo medio de procesamiento no supere los 60 minutos. Ordena el resultado por ID del almacén en orden ascendente. Formato de entrada Tabla operations: • operation_id (int) — identificador único de la operación • warehouse_id (int) — identificador del almacén • operation_type (text) — tipo de operación: «entrega», «envío», «traslado» • quantity (int) — cantidad de unidades del producto en la operación • operation_date (timestamp) — fecha y hora de la operación • processing_time (int) — tiempo de procesamiento de la operación La columna processing_time puede contener valores nulos. Formato de salida La consulta debe devolver una tabla con los campos en el siguiente orden: • warehouse_id (int) — identificador único del almacén • count_operations (int) — cantidad total de operaciones realizadas en el almacén • sum_quantity (int) — cantidad total de productos procesados en el almacén • avg_processing_time (numeric) — tiempo medio de procesamiento de la operación (en minutos), considerando solo operaciones con tiempo no nulo, redondeado al entero más cercano • max_quantity (int) — cantidad máxima de productos procesados en una sola operación • min_quantity (int) — cantidad mínima de productos procesados en una sola operación • supply_operations (int) — cantidad de operaciones de tipo «entrega» • shipment_operations (int) — cantidad de operaciones de tipo «envío» • transfer_operations (int) — cantidad de operaciones de tipo «traslado»
¿Han trabajado con incidentes de calidad de datos?
¿Qué te motiva en el trabajo? Enumera tus fortalezas en cuanto a habilidades técnicas.
¿Por qué no es recomendable hacer muchas inserciones pequeñas en ClickHouse?
¿Has construido paneles y trabajado con herramientas de visualización de datos (herramientas de BI)?
¿Qué es el optimizador Catalyst en Spark y qué ejemplos específicos de optimizaciones realiza (por ejemplo, predicate pushdown)?
¿Cómo abordó los problemas de optimización cuando la consulta tarda mucho y realiza un escaneo completo? ¿Cómo abordaría una tarea similar nueva?
¿Cómo actuar en caso de sesgo (skew) en user_id al hacer JOIN entre tablas de transacciones y usuarios? ¿Cómo elegir la clave de distribución óptima?