El particionado divide una tabla en trozos físicamente separados, normalmente por fecha, de modo que una consulta filtrada poda particiones enteras y escanea menos datos. El clustering ordena los datos dentro del almacenamiento por las columnas elegidas para que el motor pueda saltarse bloques con esos predicados. Particiona por la columna que aparece en casi todos los WHERE, típicamente la fecha del evento; haz clustering sobre las columnas de alta cardinalidad por las que la gente filtra o une después.
Por qué lo preguntan los entrevistadores
Los entrevistadores quieren instinto práctico de coste y rendimiento, ya que el volumen escaneado es la factura en BigQuery y el consumo de créditos en Snowflake. También están comprobando los errores clásicos: particionar por una columna de alta cardinalidad, crear miles de particiones diminutas y asumir que el clustering ayuda a consultas que no filtran por las claves de clustering.
Cómo estructurar tu respuesta
- Define el particionado como poda física y el clustering como orden dentro de los datos.
- Da la regla para elegir cada columna.
- Avisa del exceso de particiones y del problema de ficheros pequeños.
- Explica cómo verificar el beneficio en lugar de darlo por hecho.
- Átalo al coste, no solo a la velocidad.
Ejemplo de respuesta
El particionado es grueso y físico: divides por día y una consulta filtrada a la última semana lee siete particiones en vez de la tabla entera. El clustering es un orden de grano fino dentro de los datos para que el motor pueda saltarse bloques según los valores mínimo y máximo que guarda por bloque. Mi regla es particionar por aquello que aparece en casi todas las consultas, que casi siempre es una fecha de evento o de ingesta, y luego hacer clustering sobre el siguiente uno o dos predicados, como id de cliente o país. El fallo que he limpiado más de una vez es el exceso de particiones. Alguien particionó por id de cliente, acabó con cuarenta mil particiones de unos pocos kilobytes cada una, y solo la planificación de la consulta se volvió más lenta que el escaneo que intentaba evitar. La otra costumbre que mantengo es verificar en lugar de confiar. En BigQuery compruebo los bytes procesados antes y después con un dry run, porque si la estimación no baja, la poda no está ocurriendo, normalmente porque el filtro envuelve la columna de partición en una función.
¿Tienes esta entrevista a la vuelta de la esquina? GhostPilot escucha tu llamada en vivo, detecta la pregunta en cuanto la hacen y pone una respuesta estructurada en tu pantalla en tiempo real. Pruébalo en tu próxima entrevista de práctica, o coge un Session Pass de $29, sin suscripción, para la de verdad.
Mira cómo funcionaPreguntas de seguimiento que puedes esperar
- ¿Por qué un filtro sobre la columna de partición podría no podar?
- ¿Cómo se comporta el clustering a medida que llegan datos nuevos?
- ¿Qué es el problema de los ficheros pequeños y cómo lo arreglas?
Más preguntas para Ingeniero de datos
Tu entrevistador hará su propia versión de esta. Pega la descripción real del puesto en el Question Predictor gratuito y obtén las 20 preguntas que ese puesto tiene más probabilidades de hacerte, con lo que cada una busca en realidad.
Predecir mis preguntas