diciembre 21, 2025
19 min de lectura

Preguntas para Entrevistas de Analista de Datos Senior: Guía Completa

interview
career-advice
job-search
Preguntas para Entrevistas de Analista de Datos Senior: Guía Completa
MB

Milad Bonakdar

Autor

Domina el análisis de datos avanzado con preguntas esenciales para entrevistas que abarcan SQL avanzado, análisis estadístico, modelado de datos, procesos ETL, diseño de dashboards y gestión de stakeholders para analistas de datos senior.


Introducción

Se espera que los analistas de datos senior lideren proyectos analíticos complejos, diseñen soluciones de datos robustas, optimicen los procesos de negocio y comuniquen ideas que impulsen las decisiones estratégicas. Este rol exige experiencia en SQL avanzado, análisis estadístico, modelado de datos, procesos ETL y gestión de stakeholders.

Esta guía completa cubre las preguntas esenciales de la entrevista para los Analistas de Datos Senior, que abarcan técnicas avanzadas de SQL, análisis estadístico, modelado de datos, procesos ETL, optimización de dashboards y estrategia de negocio. Cada pregunta incluye respuestas detalladas, evaluación de rareza y niveles de dificultad.


SQL Avanzado (6 Preguntas)

1. Explica las funciones de ventana y da ejemplos.

Respuesta: Las funciones de ventana realizan cálculos en un conjunto de filas relacionadas con la fila actual sin colapsar el resultado.

  • Funciones de Ventana Comunes:
    • ROW_NUMBER(): Número secuencial único
    • RANK(): Rango con huecos para empates
    • DENSE_RANK(): Rango sin huecos
    • LAG/LEAD(): Accede a la fila anterior/siguiente
    • SUM/AVG/COUNT() OVER(): Totales/promedios acumulativos
-- ROW_NUMBER: Asigna números únicos
SELECT 
    employee_id,
    first_name,
    salary,
    ROW_NUMBER() OVER (ORDER BY salary DESC) AS row_num
FROM employees;

-- RANK: Clasifica a los empleados por salario dentro de cada departamento
SELECT 
    department,
    employee_id,
    salary,
    RANK() OVER (PARTITION BY department ORDER BY salary DESC) AS dept_rank
FROM employees;

-- LAG: Compara con la fila anterior
SELECT 
    year,
    revenue,
    LAG(revenue) OVER (ORDER BY year) AS prev_year_revenue,
    revenue - LAG(revenue) OVER (ORDER BY year) AS revenue_change
FROM annual_sales;

-- Total acumulado
SELECT 
    order_date,
    amount,
    SUM(amount) OVER (ORDER BY order_date) AS running_total
FROM orders;

-- Promedio móvil (últimos 3 meses)
SELECT 
    month,
    sales,
    AVG(sales) OVER (
        ORDER BY month 
        ROWS BETWEEN 2 PRECEDING AND CURRENT ROW
    ) AS moving_avg_3m
FROM monthly_sales;

Rareza: Muy Común Dificultad: Difícil


2. ¿Cómo optimizas las consultas SQL lentas?

Respuesta: La optimización de consultas mejora el rendimiento y reduce el uso de recursos.

  • Técnicas:
    • Indexación: Crea índices en las columnas consultadas con frecuencia
    • *Evita SELECT : Selecciona solo las columnas necesarias
    • Usa WHERE de manera eficiente: Filtra temprano
    • Optimiza JOINs: Une en columnas indexadas
    • Evita subconsultas: Usa JOINs o CTEs en su lugar
    • Usa EXPLAIN: Analiza el plan de ejecución de la consulta
    • Particiona tablas: Para tablas muy grandes
    • Agrega de manera eficiente: Usa GROUP BY apropiadamente
-- Mal: SELECT * y subconsulta
SELECT * FROM orders
WHERE customer_id IN (
    SELECT customer_id FROM customers WHERE country = 'USA'
);

-- Bien: Columnas específicas y JOIN
SELECT o.order_id, o.order_date, o.amount
FROM orders o
INNER JOIN customers c ON o.customer_id = c.customer_id
WHERE c.country = 'USA';

-- Usa EXPLAIN para analizar
EXPLAIN SELECT * FROM orders WHERE order_date > '2023-01-01';

-- Crea un índice para un mejor rendimiento
CREATE INDEX idx_order_date ON orders(order_date);

-- Usa un índice de cobertura (incluye todas las columnas necesarias)
CREATE INDEX idx_orders_covering ON orders(customer_id, order_date, amount);

-- Particiona tablas grandes
CREATE TABLE orders_2023 PARTITION OF orders
FOR VALUES FROM ('2023-01-01') TO ('2024-01-01');

Rareza: Muy Común Dificultad: Difícil


3. ¿Qué son los CTEs (Common Table Expressions) y cuándo los usarías?

Respuesta: Los CTEs crean conjuntos de resultados nombrados temporales que existen solo durante la ejecución de la consulta.

  • Beneficios:
    • Mejora la legibilidad
    • Permite la recursión
    • Reutilización en la misma consulta
    • Mejor que las subconsultas para la lógica compleja
-- CTE básico
WITH high_earners AS (
    SELECT employee_id, first_name, salary
    FROM employees
    WHERE salary > 80000
)
SELECT * FROM high_earners
WHERE first_name LIKE 'J%';

-- Múltiples CTEs
WITH 
sales_summary AS (
    SELECT 
        product_id,
        SUM(quantity) AS total_quantity,
        SUM(amount) AS total_revenue
    FROM sales
    GROUP BY product_id
),
product_info AS (
    SELECT product_id, product_name, category
    FROM products
)
SELECT 
    p.product_name,
    p.category,
    s.total_quantity,
    s.total_revenue
FROM sales_summary s
JOIN product_info p ON s.product_id = p.product_id
ORDER BY s.total_revenue DESC;

-- CTE recursivo (jerarquía organizacional)
WITH RECURSIVE employee_hierarchy AS (
    -- Caso base: empleados de nivel superior
    SELECT employee_id, first_name, manager_id, 1 AS level
    FROM employees
    WHERE manager_id IS NULL
    
    UNION ALL
    
    -- Caso recursivo: empleados que reportan al nivel anterior
    SELECT e.employee_id, e.first_name, e.manager_id, eh.level + 1
    FROM employees e
    JOIN employee_hierarchy eh ON e.manager_id = eh.employee_id
)
SELECT * FROM employee_hierarchy
ORDER BY level, employee_id;

Rareza: Común Dificultad: Media


4. Explica la diferencia entre UNION y UNION ALL.

Respuesta: Ambos combinan los resultados de múltiples sentencias SELECT.

  • UNION:
    • Elimina las filas duplicadas
    • Más lento (requiere clasificación/comparación)
    • Úsalo cuando se deban eliminar los duplicados
  • UNION ALL:
    • Mantiene todas las filas, incluidos los duplicados
    • Más rápido (sin deduplicación)
    • Úsalo cuando los duplicados son aceptables o imposibles
-- UNION - elimina duplicados
SELECT customer_id FROM orders_2022
UNION
SELECT customer_id FROM orders_2023;
-- Resultado: IDs de clientes únicos de ambos años

-- UNION ALL - mantiene duplicados
SELECT customer_id FROM orders_2022
UNION ALL
SELECT customer_id FROM orders_2023;
-- Resultado: todos los IDs de clientes (puede haber duplicados)

-- Comparación de rendimiento
-- UNION ALL es más rápido cuando sabes que no hay duplicados
SELECT 'Q1' AS quarter, revenue FROM q1_sales
UNION ALL
SELECT 'Q2', revenue FROM q2_sales
UNION ALL
SELECT 'Q3', revenue FROM q3_sales
UNION ALL
SELECT 'Q4', revenue FROM q4_sales;

Rareza: Común Dificultad: Fácil


5. ¿Cómo manejas los valores NULL en SQL?

Respuesta: NULL representa datos faltantes o desconocidos y requiere un manejo especial.

-- Comprueba si hay NULL
SELECT * FROM employees
WHERE manager_id IS NULL;  -- No: = NULL

-- COALESCE: Devuelve el primer valor no NULL
SELECT 
    first_name,
    COALESCE(middle_name, '') AS middle_name,
    COALESCE(bonus, 0) AS bonus
FROM employees;

-- NULLIF: Devuelve NULL si los valores son iguales
SELECT 
    product_name,
    NULLIF(discount, 0) AS discount  -- NULL si el descuento es 0
FROM products;

-- NULL en cálculos (NULL se propaga)
SELECT 
    salary,
    bonus,
    salary + bonus AS total  -- NULL si el bono es NULL
FROM employees;

-- Maneja NULL en agregaciones
SELECT 
    department,
    COUNT(*) AS total_employees,
    COUNT(manager_id) AS employees_with_manager,  -- Excluye NULLs
    AVG(COALESCE(bonus, 0)) AS avg_bonus
FROM employees
GROUP BY department;

-- NULL en JOINs
SELECT e.first_name, d.department_name
FROM employees e
LEFT JOIN departments d ON e.department_id = d.department_id
WHERE d.department_id IS NULL;  -- Empleados sin departamento

Rareza: Muy Común Dificultad: Media


6. ¿Qué son las subconsultas y cuándo las usarías frente a los JOINs?

Respuesta: Las subconsultas son consultas anidadas dentro de otra consulta.

  • Tipos:
    • Escalar: Devuelve un solo valor
    • Fila: Devuelve una sola fila
    • Tabla: Devuelve múltiples filas/columnas
  • Usa Subconsultas cuando:
    • Necesitas filtrar en base a datos agregados
    • Comprobar la existencia (EXISTS)
    • Comparar con valores agregados
  • Usa JOINs cuando:
    • Necesitas columnas de múltiples tablas
    • Mejor rendimiento (generalmente)
-- Subconsulta escalar
SELECT first_name, salary
FROM employees
WHERE salary > (SELECT AVG(salary) FROM employees);

-- Subconsulta correlacionada (se ejecuta para cada fila)
SELECT e1.first_name, e1.salary
FROM employees e1
WHERE e1.salary > (
    SELECT AVG(e2.salary)
    FROM employees e2
    WHERE e2.department = e1.department
);

-- EXISTS (eficiente para comprobar la existencia)
SELECT c.customer_name
FROM customers c
WHERE EXISTS (
    SELECT 1 FROM orders o
    WHERE o.customer_id = c.customer_id
    AND o.order_date > '2023-01-01'
);

-- IN con subconsulta
SELECT product_name
FROM products
WHERE product_id IN (
    SELECT DISTINCT product_id
    FROM sales
    WHERE sale_date > '2023-01-01'
);

-- Alternativa JOIN (a menudo más rápida)
SELECT DISTINCT p.product_name
FROM products p
INNER JOIN sales s ON p.product_id = s.product_id
WHERE s.sale_date > '2023-01-01';

Rareza: Muy Común Dificultad: Media


Análisis Estadístico (4 Preguntas)

7. ¿Cómo realizas el análisis de cohortes?

Respuesta: El análisis de cohortes agrupa a los usuarios por características compartidas y rastrea el comportamiento a lo largo del tiempo.

  • Casos de Uso Comunes:
    • Retención de clientes
    • Compromiso del usuario
    • Tendencias de ingresos por período de adquisición
-- Análisis de cohortes: Retención mensual
WITH user_cohorts AS (
    SELECT 
        user_id,
        DATE_TRUNC('month', first_purchase_date) AS cohort_month
    FROM users
),
user_activities AS (
    SELECT 
        user_id,
        DATE_TRUNC('month', activity_date) AS activity_month
    FROM activities
)
SELECT 
    uc.cohort_month,
    ua.activity_month,
    COUNT(DISTINCT ua.user_id) AS active_users,
    COUNT(DISTINCT ua.user_id) * 100.0 / 
        COUNT(DISTINCT uc.user_id) AS retention_rate
FROM user_cohorts uc
LEFT JOIN user_activities ua ON uc.user_id = ua.user_id
GROUP BY uc.cohort_month, ua.activity_month
ORDER BY uc.cohort_month, ua.activity_month;

-- Análisis de cohortes de ingresos
SELECT 
    cohort_month,
    months_since_cohort,
    SUM(revenue) AS cohort_revenue,
    AVG(revenue) AS avg_revenue_per_user
FROM (
    SELECT 
        DATE_TRUNC('month', u.signup_date) AS cohort_month,
        EXTRACT(MONTH FROM AGE(o.order_date, u.signup_date)) AS months_since_cohort,
        o.revenue,
        u.user_id
    FROM users u
    JOIN orders o ON u.user_id = o.user_id
) cohort_data
GROUP BY cohort_month, months_since_cohort
ORDER BY cohort_month, months_since_cohort;

Rareza: Común Dificultad: Difícil


8. Explica el análisis de pruebas A/B y la significación estadística.

Respuesta: Las pruebas A/B comparan dos versiones para determinar cuál funciona mejor.

  • Métricas Clave:
    • Tasa de conversión
    • Significación estadística (valor p < 0.05)
    • Intervalo de confianza
    • Tamaño de la muestra
  • Proceso:
    1. Define la hipótesis
    2. Determina el tamaño de la muestra
    3. Ejecuta la prueba
    4. Analiza los resultados
    5. Toma una decisión
-- Análisis de resultados de pruebas A/B
WITH test_results AS (
    SELECT 
        variant,
        COUNT(*) AS visitors,
        SUM(CASE WHEN converted = 1 THEN 1 ELSE 0 END) AS conversions,
        SUM(CASE WHEN converted = 1 THEN 1 ELSE 0 END) * 100.0 / COUNT(*) AS conversion_rate
    FROM ab_test_data
    GROUP BY variant
)
SELECT 
    variant,
    visitors,
    conversions,
    ROUND(conversion_rate, 2) AS conversion_rate_pct,
    -- Calcula el lift
    ROUND((conversion_rate - LAG(conversion_rate) OVER (ORDER BY variant)) / 
          LAG(conversion_rate) OVER (ORDER BY variant) * 100, 2) AS lift_pct
FROM test_results;

-- Cálculo de significación estadística (prueba de chi-cuadrado)
-- Normalmente se hace en Python/R, pero se pueden calcular los componentes en SQL
SELECT 
    variant,
    conversions,
    visitors - conversions AS non_conversions,
    visitors
FROM ab_test_data
GROUP BY variant;

Rareza: Común Dificultad: Difícil


9. ¿Cómo calculas e interpretas los percentiles?

Respuesta: Los percentiles dividen los datos en 100 partes iguales.

  • Percentiles Comunes:
    • 25º (Q1), 50º (Mediana/Q2), 75º (Q3)
    • 90º, 95º, 99º para la detección de valores atípicos
  • Casos de Uso:
    • Evaluación comparativa de salarios
    • Métricas de rendimiento
    • Monitorización de SLA
-- Calcula los percentiles
SELECT 
    PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY salary) AS p25,
    PERCENTILE_CONT(0.50) WITHIN GROUP (ORDER BY salary) AS median,
    PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY salary) AS p75,
    PERCENTILE_CONT(0.90) WITHIN GROUP (ORDER BY salary) AS p90,
    PERCENTILE_CONT(0.95) WITHIN GROUP (ORDER BY salary) AS p95
FROM employees;

-- Percentil por grupo
SELECT 
    department,
    PERCENTILE_CONT(0.50) WITHIN GROUP (ORDER BY salary) AS median_salary,
    PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY salary) AS p75_salary
FROM employees
GROUP BY department;

-- Asigna un rango de percentil a cada fila
SELECT 
    employee_id,
    salary,
    PERCENT_RANK() OVER (ORDER BY salary) AS percentile_rank,
    NTILE(4) OVER (ORDER BY salary) AS quartile
FROM employees;

-- Rango intercuartílico (IQR) para la detección de valores atípicos
WITH quartiles AS (
    SELECT 
        PERCENTILE_CONT(0.25) WITHIN GROUP (ORDER BY salary) AS q1,
        PERCENTILE_CONT(0.75) WITHIN GROUP (ORDER BY salary) AS q3
    FROM employees
)
SELECT 
    e.*,
    CASE 
        WHEN e.salary < q.q1 - 1.5 * (q.q3 - q.q1) THEN 'Low Outlier'
        WHEN e.salary > q.q3 + 1.5 * (q.q3 - q.q1) THEN 'High Outlier'
        ELSE 'Normal'
    END AS outlier_status
FROM employees e
CROSS JOIN quartiles q;

Rareza: Común Dificultad: Media


10. ¿Qué es el análisis de series temporales y cómo manejas la estacionalidad?

Respuesta: El análisis de series temporales examina los puntos de datos recopilados a lo largo del tiempo para identificar patrones.

  • Componentes:
    • Tendencia: Dirección a largo plazo
    • Estacionalidad: Patrones regulares (diarios, semanales, anuales)
    • Cíclico: Fluctuaciones irregulares
    • Aleatorio: Ruido
  • Manejo de la Estacionalidad:
    • Promedios móviles
    • Comparación interanual
    • Descomposición estacional
    • Ajuste estacional
-- Promedio móvil (suaviza la estacionalidad)
SELECT 
    date,
    sales,
    AVG(sales) OVER (
        ORDER BY date 
        ROWS BETWEEN 6 PRECEDING AND CURRENT ROW
    ) AS moving_avg_7day
FROM daily_sales;

-- Comparación interanual
SELECT 
    EXTRACT(MONTH FROM sale_date) AS month,
    EXTRACT(YEAR FROM sale_date) AS year,
    SUM(amount) AS monthly_sales,
    LAG(SUM(amount), 12) OVER (ORDER BY sale_date) AS same_month_last_year,
    (SUM(amount) - LAG(SUM(amount), 12) OVER (ORDER BY sale_date)) / 
        LAG(SUM(amount), 12) OVER (ORDER BY sale_date) * 100 AS yoy_growth
FROM sales
GROUP BY EXTRACT(MONTH FROM sale_date), EXTRACT(YEAR FROM sale_date);

-- Cálculo del índice estacional
WITH monthly_avg AS (
    SELECT 
        EXTRACT(MONTH FROM date) AS month,
        AVG(sales) AS avg_sales
    FROM daily_sales
    GROUP BY EXTRACT(MONTH FROM date)
),
overall_avg AS (
    SELECT AVG(sales) AS overall_avg
    FROM daily_sales
)
SELECT 
    m.month,
    m.avg_sales,
    o.overall_avg,
    m.avg_sales / o.overall_avg AS seasonal_index
FROM monthly_avg m
CROSS JOIN overall_avg o
ORDER BY m.month;

Rareza: Media Dificultad: Difícil


Modelado de Datos y ETL (4 Preguntas)

11. Explica el esquema de estrella frente al esquema de copo de nieve.

Respuesta: Ambos son patrones de diseño de almacenes de datos.

Loading diagram...
  • Esquema de Estrella:
    • Tabla de hechos rodeada de tablas de dimensiones desnormalizadas
    • Consultas simples (menos joins)
    • Rendimiento de la consulta más rápido
    • Más almacenamiento (datos redundantes)
  • Esquema de Copo de Nieve:
    • Tablas de dimensiones normalizadas
    • Menos almacenamiento (sin redundancia)
    • Consultas más complejas (más joins)
    • Rendimiento de la consulta más lento

Rareza: Común Dificultad: Media


12. ¿Qué es ETL y cómo diseñas un pipeline de ETL?

Respuesta: ETL (Extract, Transform, Load) mueve datos desde las fuentes al destino.

  • Extract: Extrae datos de las fuentes (bases de datos, APIs, archivos)
  • Transform: Limpia, valida, agrega, enriquece
  • Load: Inserta en el destino (almacén de datos, base de datos)
  • Consideraciones de Diseño:
    • Carga Incremental vs Carga Completa
    • Manejo de errores y registro
    • Validación de datos
    • Optimización del rendimiento
    • Programación y orquestación
-- Ejemplo de carga incremental
-- Extract: Obtén registros nuevos/actualizados
CREATE TEMP TABLE staging_customers AS
SELECT *
FROM source_customers
WHERE updated_at > (
    SELECT MAX(last_updated) 
    FROM target_customers
);

-- Transform: Limpia y estandariza
UPDATE staging_customers
SET 
    email = LOWER(TRIM(email)),
    phone = REGEXP_REPLACE(phone, '[^0-9]', '', 'g'),
    country = UPPER(country);

-- Load: Upsert en el destino
INSERT INTO target_customers
SELECT * FROM staging_customers
ON CONFLICT (customer_id) 
DO UPDATE SET
    email = EXCLUDED.email,
    phone = EXCLUDED.phone,
    updated_at = EXCLUDED.updated_at;

-- Registra la ejecución de ETL
INSERT INTO etl_log (table_name, records_processed, run_date)
VALUES ('customers', (SELECT COUNT(*) FROM staging_customers), CURRENT_TIMESTAMP);

Rareza: Muy Común Dificultad: Difícil


13. ¿Cómo aseguras la calidad de los datos?

Respuesta: La calidad de los datos asegura que los datos sean precisos, completos y fiables.

  • Dimensiones:
    • Precisión: Valores correctos
    • Integridad: Sin datos faltantes
    • Consistencia: Igual en todos los sistemas
    • Oportunidad: Actualizado
    • Validez: Se ajusta a las reglas
  • Técnicas:
    • Reglas de validación de datos
    • Pruebas automatizadas
    • Perfilado de datos
    • Detección de anomalías
    • Auditorías periódicas
-- Comprobaciones de calidad de los datos
-- 1. Comprueba si hay NULLs en los campos obligatorios
SELECT COUNT(*) AS null_emails
FROM customers
WHERE email IS NULL;

-- 2. Comprueba si hay duplicados
SELECT email, COUNT(*) AS duplicate_count
FROM customers
GROUP BY email
HAVING COUNT(*) > 1;

-- 3. Comprueba si hay formatos inválidos
SELECT COUNT(*) AS invalid_emails
FROM customers
WHERE email NOT LIKE '%@%.%';

-- 4. Comprueba la integridad referencial
SELECT COUNT(*) AS orphaned_orders
FROM orders o
LEFT JOIN customers c ON o.customer_id = c.customer_id
WHERE c.customer_id IS NULL;

-- 5. Comprueba si hay valores atípicos
SELECT COUNT(*) AS outlier_count
FROM orders
WHERE amount < 0 OR amount > 100000;

-- 6. Comprueba la frescura de los datos
SELECT 
    MAX(updated_at) AS last_update,
    EXTRACT(EPOCH FROM (CURRENT_TIMESTAMP - MAX(updated_at))) / 3600 AS hours_since_update
FROM customers;

-- Crea un panel de control de calidad de datos
CREATE VIEW data_quality_metrics AS
SELECT 
    'customers' AS table_name,
    COUNT(*) AS total_records,
    SUM(CASE WHEN email IS NULL THEN 1 ELSE 0 END) AS null_emails,
    SUM(CASE WHEN email NOT LIKE '%@%.%' THEN 1 ELSE 0 END) AS invalid_emails,
    MAX(updated_at) AS last_updated
FROM customers;

Rareza: Muy Común Dificultad: Media


14. ¿Qué es la normalización de datos y cuándo desnormalizarías?

Respuesta:

  • Normalización: Organizar los datos para reducir la redundancia
    • 1NF, 2NF, 3NF, BCNF
    • Beneficios: Integridad de los datos, menos almacenamiento
    • Inconveniente: Más joins, consultas más lentas
  • Desnormalización: Añadir intencionalmente redundancia
    • Beneficios: Consultas más rápidas, SQL más simple
    • Inconvenientes: Más almacenamiento, anomalías de actualización
    • Usar para: Almacenes de datos, informes, sistemas de lectura intensiva
-- Normalizado (3NF)
-- Tabla de pedidos
CREATE TABLE orders (
    order_id INT PRIMARY KEY,
    customer_id INT,
    product_id INT,
    quantity INT
);

-- Requiere joins para la elaboración de informes
SELECT 
    c.customer_name,
    p.product_name,
    o.quantity
FROM orders o
JOIN customers c ON o.customer_id = c.customer_id
JOIN products p ON o.product_id = p.product_id;

-- Desnormalizado (para informes)
CREATE TABLE orders_denormalized (
    order_id INT PRIMARY KEY,
    customer_id INT,
    customer_name VARCHAR(100),  -- Desnormalizado
    customer_email VARCHAR(100),  -- Desnormalizado
    product_id INT,
    product_name VARCHAR(100),  -- Desnormalizado
    product_category VARCHAR(50),  -- Desnormalizado
    quantity INT,
    unit_price DECIMAL(10,2)  -- Desnormalizado
);

-- Consulta más simple y rápida
SELECT customer_name, product_name, quantity
FROM orders_denormalized;

Rareza: Común Dificultad: Media


Dashboard & Visualización (3 Preguntas)

15. ¿Cómo diseñas un dashboard eficaz?

Respuesta: Los dashboards eficaces proporcionan información útil de un vistazo.

  • Principios:
    • Conoce a tu audiencia: Ejecutivos vs analistas
    • Céntrate en los KPIs: Las métricas más importantes primero
    • Usa visualizaciones apropiadas: El gráfico correcto para el tipo de datos
    • Mantén la consistencia: Colores, fuentes, diseño
    • Permite la interactividad: Filtros, drill-downs
    • Optimiza el rendimiento: Pre-agrega los datos
    • Cuenta una historia: Flujo lógico
  • Diseño:
    • Superior: Métricas clave/KPIs
    • Medio: Tendencias y comparaciones
    • Inferior: Detalles y desgloses

Rareza: Muy Común Dificultad: Media


16. ¿Cómo optimizas el rendimiento del dashboard?

Respuesta: Los dashboards lentos frustran a los usuarios y reducen la adopción.

  • Técnicas de Optimización:
    • Agregación de datos: Pre-calcula las métricas
    • Vistas materializadas: Almacena los resultados de la consulta
    • Refresco incremental: Actualiza solo los datos nuevos
    • Limita los datos: Usa filtros, rangos de fechas
    • Optimiza las consultas: Índices, SQL eficiente
    • Extrae los datos: Mueve a una fuente de datos más rápida
    • Reduce las visualizaciones: Menos gráficos por dashboard
    • Usa extractos: Extractos de Tableau/Power BI
-- Crea una vista materializada para el dashboard
CREATE MATERIALIZED VIEW daily_sales_summary AS
SELECT 
    DATE_TRUNC('day', order_date) AS date,
    product_category,
    region,
    COUNT(*) AS order_count,
    SUM(amount) AS total_revenue,
    AVG(amount) AS avg_order_value
FROM orders
GROUP BY DATE_TRUNC('day', order_date), product_category, region;

-- Crea un índice para un filtrado más rápido
CREATE INDEX idx_daily_sales_date ON daily_sales_summary(date);

-- Refresca la vista materializada (trabajo programado)
REFRESH MATERIALIZED VIEW CONCURRENTLY daily_sales_summary;

-- Consulta del dashboard (rápida, usa datos pre-agregados)
SELECT * FROM daily_sales_summary
WHERE date >= CURRENT_DATE - INTERVAL '30 days'
AND region = 'North America';

Rareza: Común Dificultad: Media


17. ¿Qué métricas rastrearías para las diferentes funciones de negocio?

Respuesta: Los diferentes departamentos necesitan diferentes métricas.

  • Ventas:
    • Ingresos, tasa de conversión, tamaño medio de la operación
    • Duración del ciclo de ventas, tasa de éxito
    • Coste de adquisición de clientes (CAC)
  • Marketing:
    • ROI, coste por lead, tasa de conversión de leads
    • Tráfico del sitio web, tasa de engagement
    • Valor de vida del cliente (CLV)
  • Operaciones:
    • Tiempo de cumplimiento de los pedidos, tasa de error
    • Rotación de inventario, utilización de la capacidad
    • Tasa de entrega a tiempo
  • Finanzas:
    • Margen de beneficio, flujo de caja, tasa de consumo
    • Crecimiento de los ingresos, EBITDA
    • Antigüedad de las cuentas por cobrar
  • Éxito del Cliente:
    • Satisfacción del cliente (CSAT), Net Promoter Score (NPS)
    • Tasa de abandono, tasa de retención
    • Tiempo de resolución de tickets de soporte

Rareza: Común Dificultad: Fácil


Estrategia de Negocio y Comunicación (3 Preguntas)

18. ¿Cómo priorizas los proyectos de análisis?

Respuesta: La priorización asegura el máximo impacto en el negocio.

  • Marco:
    • Impacto: Valor potencial para el negocio
    • Esfuerzo: Tiempo y recursos necesarios
    • Urgencia: Sensibilidad al tiempo
    • Alineación de las partes interesadas: Apoyo ejecutivo
  • Matriz de Priorización:
    • Alto Impacto, Bajo Esfuerzo: Hacer primero
    • Alto Impacto, Alto Esfuerzo: Planificar cuidadosamente
    • Bajo Impacto, Bajo Esfuerzo: Victorias rápidas
    • Bajo Impacto, Alto Esfuerzo: Evitar
  • Preguntas a Hacer:
    • ¿Qué problema de negocio resuelve esto?
    • ¿Cuál es el ROI esperado?
    • ¿Quiénes son las partes interesadas?
    • ¿Qué datos están disponibles?
    • ¿Cuáles son las dependencias?

Rareza: Común Dificultad: Media


19. ¿Cómo manejas los requisitos conflictivos de las partes interesadas?

Respuesta: La gestión de las partes interesadas es crucial para los analistas senior.

  • Enfoque:
    • Entender las necesidades: Haz preguntas aclaratorias
    • Encontrar puntos en común: Objetivos compartidos
    • Priorizar: Basado en el impacto en el negocio
    • Comunicar las contrapartidas: Explica las restricciones
    • Proponer alternativas: Soluciones en las que todos ganan
    • Escalar si es necesario: Obtener la alineación ejecutiva
    • Documentar las decisiones: Registro claro
  • Ejemplo:
    • Marketing quiere un dashboard en tiempo real
    • IT dice que el tiempo real es demasiado caro
    • Solución: El tiempo casi real (refresco de 15 minutos) equilibra las necesidades y el coste

Rareza: Común Dificultad: Media


20. ¿Cómo mides el éxito de tu trabajo de análisis?

Respuesta: Demostrar valor es esencial para el crecimiento profesional.

  • Métricas:
    • Impacto en el Negocio:
      • Aumento de los ingresos
      • Reducción de costes
      • Mejora de la eficiencia
      • Mejor toma de decisiones
    • Adopción:
      • Uso del dashboard
      • Distribución de informes
      • Feedback de las partes interesadas
    • Calidad:
      • Precisión de los datos
      • Oportunidad
      • Capacidad de acción de los insights
  • Documentación:
    • Rastrea los proyectos y los resultados
    • Cuantifica el impacto cuando sea posible
    • Recopila testimonios
    • Presenta estudios de caso

Rareza: Media Dificultad: Media


Newsletter subscription

Consejos de carrera semanales que realmente funcionan

Recibe las últimas ideas directamente en tu bandeja de entrada

Decorative doodle

Tu Próxima Entrevista Está a Solo un Currículum de Distancia

Crea un currículum profesional y optimizado en minutos. No se necesitan habilidades de diseño, solo resultados comprobados.

Crea mi currículum

Compartir esta publicación

Consigue Empleo 50% Más Rápido

Los buscadores de empleo que usan currículums profesionales mejorados con IA consiguen puestos en un promedio de 5 semanas en comparación con las 10 estándar. Deja de esperar y empieza a entrevistar.