Objetivo
Cargar CSV de forma repetible y auditable.
Explicación
FILE FORMAT describe cómo interpretar un archivo; STAGE define dónde está; COPY INTO carga. Separa la definición de formato de la orden de carga para reutilizarla. En Snowflake, una decisión aparentemente pequeña puede afectar coste, seguridad o trazabilidad. El objetivo profesional es saber qué objeto estás usando, qué privilegios necesita y cómo demostrar que una carga o transformación no ha perdido datos. Una carga fiable no se valida sólo porque COPY INTO termine. Debes revisar filas cargadas/rechazadas, formato de archivo y reconciliar el conteo con la fuente antes de aceptar RAW como completo. Para trabajar Stages, file formats y COPY INTO de forma profesional, no te quedes con el ejemplo: identifica la entrada, ejecuta el caso base, provoca al menos un caso incorrecto y compara el resultado con un control independiente. En este laboratorio el criterio de salida es concreto: Tabla RAW con número de filas igual al CSV válido. La verificación principal será: Compara COUNT(*) y usa validación de COPY cuando proceda. Si no puedes explicar por qué pasa esa comprobación, vuelve al paso anterior antes de continuar.
Contexto profesional
En Snowflake, una decisión aparentemente pequeña puede afectar coste, seguridad o trazabilidad. El objetivo profesional es saber qué objeto estás usando, qué privilegios necesita y cómo demostrar que una carga o transformación no ha perdido datos. Una carga fiable no se valida sólo porque COPY INTO termine. Debes revisar filas cargadas/rechazadas, formato de archivo y reconciliar el conteo con la fuente antes de aceptar RAW como completo.
Ejemplo real
CREATE FILE FORMAT ff_csv TYPE=CSV SKIP_HEADER=1 FIELD_OPTIONALLY_ENCLOSED_BY='"';
-- después: COPY INTO RAW.ORDERS ... FILE_FORMAT=(FORMAT_NAME=ff_csv);
Archivos o datos de entrada
- sql/ecommerce_setup.sql
- data/ecommerce_orders.csv
Práctica guiada
Define tabla RAW.ORDERS con tipos razonables.
Laboratorio paso a paso
- Prepara el entorno y localiza los datos/archivos de entrada: sql/ecommerce_setup.sql, data/ecommerce_orders.csv. Antes de modificar nada, anota el número de filas, columnas u objetos que esperas usar.
- Reproduce el ejemplo real de la lección y guarda la salida. No avances hasta poder explicar qué hace cada bloque relacionado con «Stages, file formats y COPY INTO».
- Ejecuta la práctica guiada: Define tabla RAW.ORDERS con tipos razonables. Documenta el comando, consulta o acción exacta y el resultado obtenido.
- Resuelve el reto sin mirar la solución: Diseña una carga que permita revisar errores antes de aceptar datos. Si falla, registra el mensaje de error y formula una hipótesis antes de cambiar código.
- Compara tu resultado con el criterio esperado: Tabla RAW con número de filas igual al CSV válido. Después ejecuta la comprobación: Compara COUNT(*) y usa validación de COPY cuando proceda.
- Provoca deliberadamente un caso problemático relacionado con este error frecuente: Transformar status o revenue durante la carga RAW mezcla responsabilidades.. Comprueba que sabes detectarlo y corregirlo.
Reto sin ayuda
Diseña una carga que permita revisar errores antes de aceptar datos.
Resultado esperado
Tabla RAW con número de filas igual al CSV válido.
Cómo verificarlo
Compara COUNT(*) y usa validación de COPY cuando proceda.
Checklist de validación
- El resultado cumple: Tabla RAW con número de filas igual al CSV válido.
- Has ejecutado esta verificación y puedes explicar el resultado: Compara COUNT(*) y usa validación de COPY cuando proceda.
- Has probado al menos un caso límite o dato inválido y el comportamiento es explícito, no silencioso.
- Puedes repetir la práctica desde cero sin copiar la solución y dejar evidencia (consulta, commit, captura o salida de consola).
Pista específica
Carga primero en RAW sin lógica de negocio.
Solución paso a paso
1) Empieza reproduciendo el caso base con los datos indicados. 2) Aplica esta estrategia específica: Define tipos, stage/file format y valida errores de parseo. 3) Usa como referencia técnica el ejemplo de la lección (CREATE FILE FORMAT ff_csv TYPE=CSV SKIP_HEADER=1 FIELD_OPTIONALLY_ENCLOSED_BY='»‘; — después: COPY INTO RAW.ORDERS … FILE_FORMAT=(FORMAT_NAME=ff_csv);). 4) Ejecuta la verificación: Compara COUNT(*) y usa validación de COPY cuando proceda. 5) Compara con el resultado esperado: Tabla RAW con número de filas igual al CSV válido. 6) Repite el reto cambiando un dato o condición para demostrar que entiendes el comportamiento y no has obtenido el resultado por casualidad. Si aparece el error «Transformar status o revenue durante la carga RAW mezcla responsabilidades.», corrige la causa antes de continuar; no ocultes el fallo ni cambies el resultado esperado para que la prueba pase.
Errores frecuentes
- Transformar status o revenue durante la carga RAW mezcla responsabilidades.
Qué debes recordar
Relaciona cada objeto de Snowflake con su responsabilidad y coste.
Preguntas de entrevista
- ¿Cómo separarías compute, almacenamiento y permisos para este caso? Aplícalo concretamente a «Stages, file formats y COPY INTO».
- ¿Qué consultarías para diagnosticar coste o una carga incompleta? Explica qué evidencia enseñarías al revisor.
Siguiente paso
Trabajarás datos semi-estructurados.
Recursos de esta lección
Preparando contenido…
Quiz de la lección
¿Qué objeto describe delimitador y cabecera de CSV?