Snowflake es una solución de almacenamiento de datos que se ofrece como una oferta de software como servicio (SaaS). Desacopla el almacenamiento y los cálculos, lo que le permite pagar por separado por los dos. Le proporciona la flexibilidad de elegir la región y también el proveedor de recursos (AWS, Azure o Google Cloud). Al igual que la mayoría de otros almacenes de datos, almacena datos en columnas en lugar de filas, lo que permite la ejecución de consultas paralelas. Del mismo modo, utiliza SQL para consultar datos como la mayoría de los almacenes.

Este artículo le presentará a Snowflake y cubrirá en detalle un tema muy nicho en SQL Syntax, Expresiones comunes de tabla (CTE) de Snowflake. Discutirá los tipos, ejemplos y casos de uso de las expresiones comunes de tabla de Snowflake y le ayudará a entender mejor su implementación.

Índice

  • Requisitos previos
  • Introducción al copo de nieve
  • Introducción a las expresiones comunes de tabla de copo de nieve
  • Tipos de expresiones comunes de tabla de copo de nieve
    • Caso de uso para expresiones de tabla comunes de copo de nieve recursivo
    • Caso de uso para expresiones de tabla comunes de copo de nieve no recursivas
  • Ejemplo de expresión de tabla común de copo de nieve
  • Casos de uso de copo de nieve Expresión de tabla común
  • Conclusión

Requisitos previos

  • La familiaridad con SQL es esencial.
  • Una cuenta de Snowflake.

Introducción al copo de nieve

Fuente de la imagen

Snowflake es un almacén de datos en la nube completamente relacional, basado principalmente en SQL, que proporciona una base de datos como plataforma de servicio (DBaaS) a los usuarios. Snowflake puede ofrecer a su empresa el poder y la agilidad necesarios para satisfacer los deseos de conversión de datos. El almacenamiento en la nube le permite mantener cantidades casi ilimitadas de datos basados y semi-basados en un solo área, como resultado, consolidando los hechos fuera de sus numerosas fuentes de datos. Además, este almacén de datos es fácilmente escalable y le permite satisfacer sus crecientes necesidades de almacenamiento de datos sin gastos adicionales.

Características clave del copo de nieve

Fuente de la imagen

Las siguientes características de Snowflake son responsables de su creciente popularidad en el mercado mundial:

  • Escalabilidad : Snowflake proporciona capacidades de almacenamiento y cálculo separadas. Se utiliza una base de datos para almacenar datos y Snowflake realiza el cálculo con un Almacén Virtual de Datos. Por lo tanto, puede proporcionar una escalabilidad alta a un bajo costo.
  • Bajo mantenimiento: El diseño de Snowflake garantiza que se requiere una interacción y un esfuerzo mínimos para cualquier actividad relacionada con el mantenimiento.
  • Optimización de la consulta: Snowflake tiene optimización automática de la consulta para protegerle de tener que mejorar manualmente sus consultas.
  • Balanceador de carga: Snowflake es la opción ideal si desea separar cargas de trabajo rutinarias en diferentes almacenes de datos virtuales para que las cargas analíticas no se vean afectadas por un cúmulo ocupado durante las cargas máximas de rutina.

Introducción a las expresiones comunes de tabla de copo de nieve

Por ejemplo, en SQL todos los días, usted haría algo como esto para determinar los rangos superiores en una clase:

SELECT t1.roll_no, t1.perc from(SELECT roll_no, SUM(marks)*100.0/SUM(total_marks) as percFROM student_marksGROUP BY roll_no) as t1ORDER BY t1.perc DESCLIMIT 5

La consulta dentro de los paréntesis en la instrucción anterior es la subconsulta. Snowflake Common Table Expresions esencialmente se denominan subconsultas, usadas con una cláusula CON. La sintaxis para un CTE es:

En este punto, usted puede estar preguntándose “¿Cuál es el gran problema?”. Bueno, Snowflake Common Table Expresiones se vuelven poderosas con datos jerárquicos, porque permiten la recursión.

Su tubería completamente automatizada ofrece datos para ser entregados en tiempo real sin ninguna pérdida de origen a destino. Su arquitectura tolerable y escalable garantiza que los datos se manejan de una manera segura y consistente con pérdida cero de datos y soporta diferentes formas de datos. Las soluciones proporcionadas son consistentes y funcionan con diferentes herramientas de inteligencia de negocios (BI).

Empezar con Hevo gratis

Echa un vistazo a por qué Hevo es el mejor:

  • Gestión de esquemas : Hevo elimina la tediosa tarea de gestión de esquemas & detecta automáticamente el esquema de datos entrantes y lo asigna al esquema de destino.
  • Hevo está construido a escala : A medida que crece el número de fuentes y el volumen de sus datos, Hevo escala horizontalmente, manejando millones de registros por minuto con muy poca latencia.

Tipos de expresiones comunes de tabla de copo de nieve

  • Recursivo : Un CTE recursivo, por otro lado, le permite preguntarse a sí mismo. ¿Confundido? Vamos a descomponerlo.

Observe la estructura de la subconsulta. Tiene una cláusula de anclaje y una cláusula recursiva. La cláusula de anclaje es una consulta independiente que NO puede hacer referencia a cte_name. Generalmente se utiliza para la parte superior de la jerarquía. La cláusula recursiva puede hacer referencia a cte_name. ¿Qué significa eso? ¿Puede la cláusula recursiva consultar toda la vista generada hasta ahora? ¡No! Sólo puede consultar la vista generada en la iteración anterior.

Ejemplo de expresión de tabla común de copo de nieve

Vamos a crear una tabla llamada ‘ lugares ’, y poblar con algunos datos.

crear o reemplazar lugares de tabla (nombre varchar, código entero, division_code entero);

India tiene numerosos estados/territorios sindicales. Los estados están divididos en distritos. Los distritos están divididos en ciudades, pueblos o ciudades. Cada una de estas divisiones tiene un código único que se puede encontrar aquí. Vamos a considerar una situación en la que tenemos el nombre de cualquier división (puede ser estado, distrito, cualquier cosa), su código, y el código de la división dentro de la cual se encuentra esta división en particular. Vamos a poblar la tabla con algunos datos.

insertar en lugares (nombre, código, división_código) valores('Chakan',555862.521),('Lonavala',802810,521),('Pune',521,27),('Maharashtra',27,null),('Karad',802870,527),('Khandala',563201.527),('Satara',527,27)

Ahora, primero tratemos de mapear cada lugar con la división a la que pertenece, usando un CTE. Un CTE no recursivo también lo hará.

CON mapping_cte(name, division_name) como (-- subquery beginsSELECT places.name as name, divisions.name as division from placesLEFT OUTER JOIN se coloca como divisions on places.division_code = divisions.code-- subquery ends)SELECT * from mapping_cte

Fuente de la imagen: Self

  • Crear una nueva columna que contenga la versión concatenada del código del lugar actual y todas las divisiones anteriores. Esto ayudará a ordenar los datos.
SELECT sangry  name, sort_key from mapping_cteORDER BY sort_keyWITH RECURSIVE mapping_cte(indent, name, code, code, places.code, TO_VARCHAR(places.code) as sort_keyfrom placesWHERE division_code IS NULLUNION ALL-- Recursive ClausureSELECT mapping_cte.indent .........', places.name, places.code, mapping_cte.sort_key  TO_VARCHAR(places.code)a partir de placesINNER JOUND mapping_cte on mapping_cte.code = places.division_code)SELECT sangry  name, sort_key from mapping_cteORDER BY sort_key

Fuente de la imagen: Self

La vista CTE final tiene una fila correspondiente a Maharashtra

La cláusula Recursive, en la primera iteración, toma la tabla de trabajo y encuentra todas las filas cuyas division_codes coincidan con la columna de código de la tabla de trabajo. Al final de esta iteración:

  • La tabla de trabajo para la siguiente consulta recursiva tiene las dos filas añadidas por la consulta actual, a saber Pune y Satara
  • La tabla de trabajo para la siguiente consulta recursiva tiene las 4 filas añadidas por la consulta actual, a saber, Chakan, Lonavala, Khandala y Karad

En la siguiente iteración de nuevo la consulta Recursive intenta encontrar filas cuyos códigos de división coinciden con la columna de código en la tabla de trabajo. Sin embargo, no encuentra ninguna esta vez. Así, la consulta sale y la vista CTE está completamente formada.

Casos de uso de copo de nieve Expresión de tabla común

Las expresiones de tabla comunes de copo de nieve recursivas deben ser usadas con precaución. Conducen a bucles infinitos fácilmente (aunque Snowflake detiene el cálculo después de un cierto umbral de iteraciones). Un escenario que puede conducir a un bucle infinito es la presencia de ciclos en los datos. En los datos anteriores, si añadimos el código de Satara como código de división para Maharashtra, obtenemos un ciclo. Si los datos no se supone que contengan un ciclo, evítalo. De lo contrario, evite utilizar CTE recursivos para datos cíclicos.

Las expresiones de tabla comunes de copo de nieve no recursivas tienen los mismos casos de uso que las subconsultas. Hacen que el código sea más legible y estructurado. Los CTE recursivos deben usarse principalmente con datos jerárquicos, especialmente cuando la naturaleza jerárquica de los datos es importante en la salida. En la tabla anterior, si tuviera que encontrar todos los lugares que contienen la letra ‘S’ en su nombre, entonces no necesitarías un CTE recursivo, aunque los datos sean jerárquicos.

El artículo le presentó a Snowflake y explicó sus características clave. Además, le presentó a Expresiones de Tabla Común, discutió cómo trabajar con ellos en Snowflake, cuáles son sus tipos (recursivos y no recursivos), y cuándo usarlos, y lo más importante, cuando no usarlos. También ha visto un ejemplo para ayudar a la comprensión.

Visite nuestro sitio web para explorar Hevo

¡Comparte tu comprensión de Snowflake Common Table Expresions en los comentarios a continuación!

  • Almacenamiento de datos
  • Almacén de datos de copo de nieve

Video:

Similar Articles

Most Popular