Snowflake MigrationClickHouse Workshops

01 Entorno de origen

Guía del facilitador para provisionar Snowflake: tiempos, productor que debe seguir activo y solución de problemas.

Complemento para la lección 01 Entorno de origen.

Tiempo

Unos 45 minutos en total. El Paso 2 (./setup.sh) es el único tramo desatendido: dura aproximadamente entre 5 y 10 minutos, dedicados en su mayor parte a sembrar los datos sintéticos con TABLE(GENERATOR). Conviene aprovecharlo para explicar el guion que aparece a continuación, en lugar de contemplar el proceso en silencio. El resto del tiempo —los Pasos 1 y 3–5— requiere que el participante esté ante el teclado para configurar las credenciales, comprobar que el productor y Superset se han iniciado, poner en marcha el bucle de actualización de dbt y revisar las siete consultas.

Guion

  • Este módulo crea un origen que realmente merezca la pena migrar: una columna VARIANT, un stream de CDC, dos tareas programadas y una capa de BI que lee por encima de todo ello; no una tabla de juguete. Cada uno de esos elementos se convertirá en una decisión de migración concreta en el módulo 02.
  • Recorre una vez la arquitectura Medallion del diagrama: RAW -> STAGING -> ANALYTICS dentro de NYC_TAXI_DB, y señala los dos objetos que la mantienen en movimiento con independencia de dbt: TRIPS_CDC_STREAM y las dos tareas programadas.
  • Señala la biblioteca de consultas del Paso 5 aunque los participantes no vayan a traducirlas hasta el módulo 02. Cada una ya incluye un comentario que esboza el equivalente en ClickHouse, de modo que pueden empezar a reconocer patrones desde ahora.
  • Déjalo claro y repítelo al final del módulo: el productor y el bucle de actualización de dbt deben seguir ejecutándose. La transición del módulo 05 mide exactamente el desfase que crea el productor entre Snowflake y ClickHouse durante la migración. Si un participante lo detiene aquí por afán de orden, arruina silenciosamente esa demostración tres módulos más tarde.

Fallos habituales

  • terraform init falla con un error del proveedor. Confirma que se usa Terraform

    = 1.6 y que la máquina tiene acceso a Internet para comunicarse con el registro de Terraform.

  • snowsql rechaza la conexión. Verifica SNOWFLAKE_ORG y SNOWFLAKE_ACCOUNT; prueba snowsql -a ${SNOWFLAKE_ORG}-${SNOWFLAKE_ACCOUNT} -u ${SNOWFLAKE_USER}.
  • dbt run falla con relation not found. Ejecuta primero ./setup.sh --skip-seed: este comando crea la estructura de la base de datos. Después, confirma que profiles.yml apunta a NYC_TAXI_DB.
  • Superset muestra connection refused. Superset necesita unos 60 segundos para inicializarse después de docker-compose up; revisa docker logs nyc_taxi_superset si sigue sin responder una vez transcurrido ese tiempo.
  • La semilla tarda más de lo esperado. TABLE(GENERATOR) crea 50 M de filas en unos 10–12 minutos. El UPDATE posterior que rellena la columna JSON TRIP_METADATA en las 50 millones de filas puede añadir entre 15 y 20 minutos más en un warehouse SMALL. Es un comportamiento normal de Snowflake al actualizar una columna VARIANT de gran tamaño, no un bloqueo; explícalo antes de que alguien intente solucionar un script que está funcionando correctamente.
  • Alguien detiene el productor al creer terminado el módulo. Los módulos 02–05 dependen de que siga activo y el módulo 05 mide expresamente el desfase que genera. Es el error bienintencionado más dañino de todo el taller; adviértelo de forma explícita y más de una vez.

Pasos de restablecimiento

  • Para volver a aprovisionar sin repetir la carga de datos de unos 10 minutos, ejecuta ./setup.sh --skip-seed; la infraestructura ya existe y TRIPS_RAW ya contiene datos.
  • Para iterar únicamente sobre un cambio de Terraform o SQL, basta con ./setup.sh --skip-seed.
  • Itera solo modelos dbt sin Superset: ./setup.sh --skip-seed --skip-superset.
  • Para probar cambios de Terraform sin volver a ejecutar dbt, añade --skip-dbt.
  • Después de cambiar el esquema de un modelo dbt, fuerza una reconstrucción incremental completa con --full-refresh; combínalo con --skip-seed para no repetir también la carga de datos.
  • Solo si es irrecuperable: source .env && ./teardown.sh desde workshop_public/snowflake_migration_lab/01-setup-snowflake/, y luego ./setup.sh. Es destructivo y obliga a repetir toda la siembra de unos 10–12 minutos; no recurras a ello como primera respuesta cuando un participante se atasque.

En esta página

ES