Etiquete, realice un seguimiento y optimice cada modelo de dbt, desde la atribución de costes y la depuración de rendimiento hasta la supervisión del entorno, con una sola línea de configuración o Genie.
Su proyecto dbt ejecuta 80 modelos cada noche. La factura del almacén se duplicó el último trimestre. El rendimiento del modelo varía ampliamente y los efectos de las optimizaciones más recientes no están claros. Finanzas pregunta qué equipo es responsable. Abres el historial de consultas y ves... 80 filas idénticas etiquetadas como 'Databricks Dbt'. Buena suerte.
Con Query Tags (ahora en versión preliminar pública), los equipos de datos pueden beneficiarse de etiquetas de inyección automática listas para usar, como dbt_model_name, que enriquecen cada ejecución. También puede asociar sus propias etiquetas personalizadas (equipo, centro de costes, entorno, etc.) a cada consulta que genere la
canalización. Las etiquetas se registran en system.query.history, lo que permite que la atribución de costos, la depuración de rendimiento y la supervisión de cargas de trabajo se realicen con una simple consulta SQL (consulte todos los detalles en la documentación).
En este blog se describe un proyecto completo de dbt de código abierto que muestra etiquetas de consulta de principio a fin: desde la configuración hasta los paneles de atribución de costos. Todo lo descrito aquí está disponible como un repositorio de GitHub que puede clonar e implementar en su propio espacio de trabajo, o simplemente preguntarle a Genie.
Además de las etiquetas personalizadas, dbt-databricks inyecta automáticamente metadatos sobre cada ejecución de modelo:
Etique | taValor de | ||
ejemplo | Description@@@dbt_model_name | efct_daily_usage_by_sku | El modelo dbt que se está |
ejecutando@@dbt_materialized | table | Estrategia de materialización (tabla, vista, incremental, vista_métrica) | |
@@dbt_core_ | version1.11.6 | ||
version@@dbt_databricks_ | version1.12.0a1 | dbt-databricks adaptador |
Estas etiquetas automáticas le permiten obtener visibilidad por modelo sin configuración: el adaptador lo hace por usted.Etiquetas a nivel de
El enfoque más sencillo: agregue un campo query_tags a un destino específico en su perfil dbt. Todas las consultas del proyecto heredan estas etiquetas automáticamente.
Por ejemplo, esta línea única etiqueta cada consulta con cuatro dimensiones: quién es el propietario (equipo), dónde va el costo (centro_coste), a qué canalización pertenece (nombre_proyecto) y en qué entorno se ejecuta (env).
Para una atribución más detallada, puede proporcionar etiquetas en modelos específicos en dbt_project.yml o en la configuración del modelo en su definición sql.
Las etiquetas de nivel de modelo se fusionan con etiquetas de nivel de perfil. Si ambos definen la misma clave, el valor a nivel de modelo tiene prioridad.
Después de ejecutar dbt run, cada instrucción SQL aparece en system.query.history con la columna query_tags rellenada como MAP. Puede consultarlo utilizando la sintaxis estándar de acceso a mapas:SELECCIONAR
Esto devuelve todas las consultas etiquetadas de los últimos siete días, con las etiquetas personalizadas y autoinyectadas extraídas en columnas individuales listas para agregarse.
También puede encontrar las etiquetas de consulta de la consulta que ejecutó en la interfaz de usuario del historial de consultas o en la interfaz de usuario de supervisión de SQL Warehouse.

En la En la parte inferior derecha del perfil de consulta, verá las etiquetas de consulta que definió, que le proporcionarán toda la información necesaria de un vistazo.

Las etiquetas de consulta permiten determinar la atribución granular del uso directamente mediante consultas SQL, elimina la necesidad de realizar análisis manuales de registros o dividir los recursos del almacén.
Puede responder a esta pregunta de dos maneras: solicite a Genie en lenguaje sencillo que realice una exploración ad hoc o escriba usted mismo el SQL para obtener un resultado repetible y listo para el panel de control. Ambos leen los mismos datos de system.query.history.

Genie escribe y ejecuta la consulta equivalente, y usted sigue analizando las preguntas de seguimiento sin tocar ningún código SQL.
Cualquiera de las rutas devuelve la misma imagen. En nuestro proyecto de referencia, las cuatro tablas mart (materializadas como tabla) dominan el tiempo de cálculo, mientras que las vistas de preparación y métricas son casi instantáneas. Esto le indica inmediatamente dónde debe centrarse el esfuerzo de optimización.

Nuestro proyecto de referencia incluye un panel de control de IA/BI que consulta a system.query.history filtrado por las propias etiquetas de consulta del proyecto. El resultado: el canal que analiza los datos de facturación también realiza un seguimiento de sus propios costes, ya que alimenta a los perros etiquetas de consulta por sí mismo.
El panel incluye:
En nuestro proyecto de referencia, los cuatro modelos mart representaban el 92 % del tiempo de cálculo; sin etiquetas de consulta, esa información era invisible.

Crear este panel de control usted mismo lleva minutos con Genie Code: solicite el tiempo de cálculo por modelo dbt desde system.query.history filtrado por las etiquetas de consulta, y escribirá el SQL y ensamblará los elementos visuales. Si prefiere pasar directamente al resultado final, el panel de control también se incluye en el proyecto de referencia y se implementa con un paquete de databriks que se implementa junto con el trabajo de dbt (consulte el repositorio de Github para obtener una guía detallada).
Las vistas métricas de Databricks (disponibles con dbt-databricks 1.12 y posteriores) son un nuevo tipo de materialización que define semántica empresarial reutilizable en forma de dimensiones y medidas directamente en Unity Catalog (consulte la documentación completa). Pueden llevar etiquetas de consulta como cualquier otro modelo, utilizando el parámetro de configuración query_tags:
Tenga en cuenta la distinción: las etiquetas de consulta se asocian a las consultas SQL que crean o actualizan la vista métrica (se rastrean en system.query.history), mientras que las etiquetas de datos de los databricks son etiquetas de catálogo de Unity en el objeto mismo (para fines de gobernanza y descubrimiento). El primero es para el seguimiento a nivel de consulta, mientras que el segundo es a nivel de objeto del catálogo de Unity para la detección general de datos.
En este artículo, hemos cubierto el proceso holístico para crear una práctica sólida de FinOps en la que las etiquetas de consulta son fundamentales para la atribución de costos. Esto es lo que aprendimos al crear el proyecto de referencia y hablar con usuarios avanzados de dbt:
El proyecto de referencia completo está disponible en GitHub: github.com/databricks-solutions/dbt-query-tags
Para empezar:
Cambie los valores de su propio equipo y centro de costes. El patrón funciona para cualquier proyecto dbt en Databricks.
¡Clone el repositorio hoy mismo! Solo se necesita una línea en su perfil para desbloquear la visibilidad de la atribución de uso a nivel de modelo en todo el almacén.
(Esta entrada del blog ha sido traducida utilizando herramientas basadas en inteligencia artificial) Publicación original
Suscríbete a nuestro blog y recibe las últimas publicaciones directamente en tu bandeja de entrada.