VARIANT y JSON

Objetivo

Consultar JSON sin perder estructura de origen.

Explicación

VARIANT puede almacenar datos semi-estructurados. La notación con : accede a claves; FLATTEN expande arrays. Conviene proyectar campos usados con frecuencia en staging. 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. Para trabajar VARIANT y JSON 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: Una fila por elemento del array con claves tipadas. La verificación principal será: COUNT de filas expandidas debe coincidir con suma de longitudes de arrays. 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.

Ejemplo real

SELECT payload:customer.id::NUMBER AS customer_id, payload:event::STRING AS event
FROM raw.events;

Archivos o datos de entrada

  • sql/ecommerce_setup.sql
  • data/ecommerce_orders.csv

Práctica guiada

Crea 3 registros JSON sencillos en una columna VARIANT.

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 «VARIANT y JSON».
  • Ejecuta la práctica guiada: Crea 3 registros JSON sencillos en una columna VARIANT. Documenta el comando, consulta o acción exacta y el resultado obtenido.
  • Resuelve el reto sin mirar la solución: Incluye un array de items y expándelo con LATERAL FLATTEN. Si falla, registra el mensaje de error y formula una hipótesis antes de cambiar código.
  • Compara tu resultado con el criterio esperado: Una fila por elemento del array con claves tipadas. Después ejecuta la comprobación: COUNT de filas expandidas debe coincidir con suma de longitudes de arrays.
  • Provoca deliberadamente un caso problemático relacionado con este error frecuente: Dejar casts implícitos puede producir errores posteriores.. Comprueba que sabes detectarlo y corregirlo.

Reto sin ayuda

Incluye un array de items y expándelo con LATERAL FLATTEN.

Resultado esperado

Una fila por elemento del array con claves tipadas.

Cómo verificarlo

COUNT de filas expandidas debe coincidir con suma de longitudes de arrays.

Checklist de validación

  • El resultado cumple: Una fila por elemento del array con claves tipadas.
  • Has ejecutado esta verificación y puedes explicar el resultado: COUNT de filas expandidas debe coincidir con suma de longitudes de arrays.
  • 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

FLATTEN devuelve VALUE para cada elemento.

Solución paso a paso

1) Empieza reproduciendo el caso base con los datos indicados. 2) Aplica esta estrategia específica: SELECT …, f.value:sku::string FROM …, LATERAL FLATTEN(input=>payload:items) f. 3) Usa como referencia técnica el ejemplo de la lección (SELECT payload:customer.id::NUMBER AS customer_id, payload:event::STRING AS event FROM raw.events;). 4) Ejecuta la verificación: COUNT de filas expandidas debe coincidir con suma de longitudes de arrays. 5) Compara con el resultado esperado: Una fila por elemento del array con claves tipadas. 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 «Dejar casts implícitos puede producir errores posteriores.», corrige la causa antes de continuar; no ocultes el fallo ni cambies el resultado esperado para que la prueba pase.

Errores frecuentes

  • Dejar casts implícitos puede producir errores posteriores.

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 «VARIANT y JSON».
  • ¿Qué consultarías para diagnosticar coste o una carga incompleta? Explica qué evidencia enseñarías al revisor.

Siguiente paso

Pasarás a seguridad y coste.

Recursos de esta lección

Quiz de la lección

¿Qué tipo almacena JSON flexible en Snowflake?

Resumen de privacidad

Esta web utiliza cookies para que podamos ofrecerte la mejor experiencia de usuario posible. La información de las cookies se almacena en tu navegador y realiza funciones tales como reconocerte cuando vuelves a nuestra web o ayudar a nuestro equipo a comprender qué secciones de la web encuentras más interesantes y útiles.