Data Engineer
¿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?
¿Qué se puede decir sobre la corrección de la siguiente consulta? select * from sessions where ended_at is null and status != 'pending';
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)?
¿Cómo están relacionadas las particiones de Spark y las particiones en las tablas (por ejemplo, en Iceberg)?
¿Cómo encontrar una subcadena en una columna específica de un archivo de registro en Linux (por ejemplo, la fecha en la tercera columna)?
¿En qué equipo y bajo qué liderazgo te sientes más cómodo trabajando?
¿En qué casos una Vista Materializada en ClickHouse puede omitir datos o, por el contrario, duplicarlos?
¿Qué ocurría cuando se activaba la restricción de calidad de datos: una alerta, una caída, un reinicio?