Mon. Oct 3rd, 2022

Realice prototipos rápidamente de sus plantillas SQL

La foto de Joanna Kosinska en UnsplashSQL en sí misma no se presta bien a la reutilización. Para lograr la reutilización, SQL a menudo se basa en plantillas utilizando bibliotecas como Jinja. Por ejemplo, Apache Superset aprovecha las plantillas de Jinja en sus definiciones de conjuntos de datos y, por supuesto, DBT es una herramienta creada completamente en torno a las plantillas de Jinja. Jupyterlab-sql-editor es compatible de forma nativa con las plantillas Jinja, lo que permite crear prototipos de plantillas jinja-sql para Superset y DBT dentro de JupyterLab y VSCode.

Cree SQL reutilizable utilizando plantillas de Jinja

los –jinja La opción habilita el soporte de plantillas Jinja haciendo que cualquier variable o función declarada en su cuaderno esté disponible para su sustitución dentro de las etiquetas Jinja {{}}Por ejemplo, puede usar una variable para representar el nombre real de la tabla que se usa en sus declaraciones SQL. Esto puede ser útil cuando tiene un esquema de base de datos para tablas de desarrollo y producción.En nuestro artículo anterior vimos que el %% chispasqlmagic admite muchos formatos de salida; texto, cuadrícula interactiva, árbol JSON interactivo, html, omitir. los %% chispasql ¡La magia tiene un truco más bajo la manga! Perdona mi juego de palabras. –salida sqlLa opción representa la instrucción SQL resultante con resaltado de sintaxis. Es una forma conveniente de validar su código de plantilla Jinja. En este ejemplo, usamos una variable de lista de python para automatizar la generación de una instrucción SELECT.Como podemos ver el Jinja {% para el artículo en la lista%}ha producido las columnas deseadas.

Aprovechando el poder de DBT

El uso de plantillas Jinja para automatizar la generación de declaraciones SQL es muy poderoso y, de hecho, todo un proyecto se basa en esta misma idea. DBT es un marco para desarrollar modelos SQL modulares con sentencias SELECT e incluye un árbitro()Macro Jinja que maneja la gestión de dependencias (qué modelos construir primero). DBT incluye una plétora de macros Jinja destinadas a simplificar la elaboración de declaraciones SQL. DBT tiene un sistema de gestión de paquetes que permite a los desarrolladores externos contribuir con bibliotecas de macros. Hay muchos de ellos en el DBT Hub%% chispasql La magia le permite aprovechar una gran cantidad de macros simplemente reemplazando el–jinjacon el –dbt opción y configurando su computadora portátil con la ubicación de su proyecto DBT. Ilustraremos el uso de DBT utilizando el proyecto de ejemplo jaffle_shop.En jaffle_shop hay un modelo llamado orders.sql. Podemos colocar el contenido de este archivo dentro de una celda Jupyter y usar el –dbt para procesar la plantilla utilizando DBT. Podemos usar el —-salida sqlrendir la declaración y la–salida htmlpara ejecutar la consulta y mostrar los resultados.Observe el uso de la DBT árbitro() macro. Esta macro se refiere a los modelos DBT existentes dentro de su proyecto DBT. %% chispasql en realidad usa el marco DBT para representar la plantilla SQL. Todos los modelos y macros DBT están disponibles para %% chispasql magia.Podemos renderizar el SQL producido por DBT. La salida es bastante larga, solo mostramos una parte de ella. Observe el ciclo de método_pago que produce las columnas esperadas. También tenga en cuenta seleccione * de _dbt__cte__stg_orders cuál es la forma en que DBT maneja la materialización de modelos efímeros. Más detalles aquí.Como se vio antes, podemos ejecutar y mostrar los resultados. Observe las salidas del registro DBT antes de que se muestren los resultados reales.Usando %% chispasql es una forma conveniente de crear un prototipo de su código DBT. Hemos ilustrado el uso de DBT utilizando un modelo preexistente. Para crear un modelo DBT desde cero, es posible que desee simplemente mostrar los datos de las tablas existentes (fuentes DBT) o modelos DBT preexistentes. Suponga que desea crear un nuevo modelo basado en el stg_pagos . Puede comenzar mostrando los datos en stg_pagos%% chispasql –dbt –output htmlselect * from {{ ref(‘stg_payments’) }} Luego comience a transformar este conjunto de datos usando las macros Jinja de DBT. Todo el tiempo viendo la salida resultante o renderizando el SQL.%% chispasql –dbt{% establecer métodos_de_pago =
[‘credit_card’, ‘coupon’, ‘bank_transfer’, ‘gift_card’] %}Seleccione
Solicitar ID,
{% para método_pago en métodos_pago -%}
sum(caso cuando método_pago = ‘{{ método_pago }}’
luego la cantidad más 0 final) como {{ método_de_pago }}_cantidad,
{% endfor -%}
suma(cantidad) como cantidad_total
de {{ ref(‘stg_payments’) }}
group by order_id Una vez que tenga una excelente consulta con plantilla, puede moverla a producción simplemente copiando la plantilla en un DBT .sqlmodelo y puede estar seguro de que realmente hará lo que espera que haga.

Código de Visual Studio DBT Usuario avanzado

DBT Power User es una popular extensión VSCode para proyectos DBT. Admite muchas funciones de autocompletado de DBT para su .sql archivos modelo.Visual Studio Code admite el trabajo con Jupyter Notebooks de forma nativa y, por lo tanto, la magia %%sparksql funciona dentro de VSCode. Como se muestra antes, todo lo que necesita hacer para aprovechar un proyecto DBT en un cuaderno es proporcionar la ubicación de su DBT a %% chispasqlUna vez que el idioma de una celda de notebook se establece en SQL, se activará el autocompletado de DBT Power User y obtendrá los mismos beneficios que al editar un .sql expediente. Tenga en cuenta que si instala sql-language-server en su VSCode, cambiará automáticamente el idioma a SQL cuando detecte una celda con un %% chispasql magia.Recuerde que el autocompletado de VSCode se activa con en lugar de en JupyterLab.Por ejemplo si seleccionamos el es_incremental sugerencia que se muestra arriba, obtenemos el siguiente código insertado en la celda de nuestro cuaderno. El mismo comportamiento que DBT Power User en un .sql archivo modelo. La conclusión es que %% chispasqlLa magia funciona de la misma manera en los cuadernos VSCode y JupyterLab. Puede representar modelos DBT en SQL, ejecutar consultas y ver los resultados. Del mismo modo, los portátiles VSCode son una excelente manera de crear prototipos de modelos DBT. Una vez que esté satisfecho con su modelo, puede copiarlo en un .sqlarchivo modelo. En este artículo mostramos cómo aprovechar %% chispasql para crear fácilmente prototipos de Spark SQL con plantilla en JupyterLab y VSCode. Nos enfocamos en Spark, sin embargo, jupyterlab-sql-editor también incluye un %%trino ¡magia! Es posible que se agreguen más motores SQL en el futuro. ¡Las contribuciones son bienvenidas! Aquí está nuestro repositorio git CybercentreCanada/jupyterlab-sql-editor.