Databricks Data Linage: Linaje a nivel de columna para Spark SQL y Delta

Linaje de datos de Databricks es el mapa a nivel de columna de cómo fluyen los datos a través de su código Spark SQL y Delta Lake: qué columnas de origen alimentan cada tabla de destino a través de sus capas bronce, plata y oro, y qué transformaciones (uniones, agregaciones, UNIR La lógica se desarrolla a lo largo del proceso. Unity Catalog captura automáticamente el linaje de las cargas de trabajo que se ejecutan a través de él; Flujo de SQL de Gudu Cubre todo lo demás analizando el propio SQL, lo que la convierte en la herramienta ideal para migraciones a Databricks, SQL que se ejecuta fuera de Unity Catalog y entornos que abarcan Databricks y otras plataformas.

Pruébalo en 30 segundos: pegar un Databricks FUSIONAR EN o consulta de cuaderno en el Visualizador de linaje SQLFlow gratuitoSeleccione el dialecto de Databricks y obtenga el diagrama de linaje a nivel de columna de inmediato. No se requiere acceso a clústeres ni espacios de trabajo.

¿Cuándo necesitas algo más que el linaje del catálogo de Unity?

Unity Catalog cumple su función a la perfección: para las consultas y los trabajos que se ejecutan a través de él, Databricks captura automáticamente el linaje, sin necesidad de herramientas adicionales. Si todo su entorno se encuentra en una única cuenta de Databricks y todas las cargas de trabajo se ejecutan a través de Unity Catalog, empiece por ahí.

La brecha es estructural, no un error: el linaje capturado en tiempo de ejecución solo existe para el código que ya se ha ejecutado en el entorno que realiza la captura. Esto deja cuatro situaciones en las que los equipos recurren a un enfoque de análisis SQL:

  • Antes de que el código se ejecute en Databricks. Estás migrando desde Oracle, Teradata o SQL Server y necesitas el gráfico de dependencias del SQL heredado —y del SQL reescrito de Databricks— antes de que se ejecute nada en producción.
  • SQL que nunca toca el catálogo de Unity. SQL de notebook exportado a archivos, scripts en un repositorio Git, SQL generado por programadores externos o herramientas ETL, código en espacios de trabajo que aún no se han actualizado al catálogo de Unity.
  • Plataformas compartidas. Las canalizaciones que comienzan en SQL Server, se transforman en Databricks y llegan a Snowflake necesitan un gráfico de linaje en los tres. SQLFlow incluye analizadores específicos de dialecto para 39 bases de datos: Databricks y Spark SQL entre ellos, por lo que toda la cadena se analiza con un solo motor.
  • Linaje en un catálogo que ya utilizas. Si su organización estandariza el uso de DataHub, Microsoft Purview u OpenMetadata en lugar de la interfaz de usuario de Databricks, necesita un linaje que se pueda exportar allí. SQLFlow incluye adaptadores de exportación para las tres plataformas.

Ambos enfoques son complementarios. Unity Catalog te indica qué se ha ejecutado; el análisis estático de SQL te indica qué hace el código, incluido el código que aún no se ha ejecutado.

Cómo SQLFlow analiza las consultas SQL de Databricks

Flujo de SQL de Gudu es un sistema automatizado Herramienta de linaje de datos SQL Basado en el analizador SQL general, un compilador SQL comercial desarrollado desde mediados de la década de 2000 y validado con aproximadamente 13 600 conjuntos de pruebas por dialecto. Incluye un analizador de dialecto específico de Databricks en la familia Spark SQL (no una gramática ANSI genérica), por lo que las construcciones específicas de Databricks se analizan como sintaxis de primera clase en lugar de aproximarse.

El análisis es completamente estático. SQLFlow lee el texto SQL y, opcionalmente, los metadatos del esquema; nunca lee las filas de sus tablas Delta y con el Edición local El texto SQL en sí nunca sale de su red: se implementa en Docker o Kubernetes y se ejecuta aislado de la red. Para cada instrucción, el analizador construye un modelo semántico completo, resolviendo cada referencia de columna a través de CTEs, subconsultas, vistas y SELECCIONAR * Tras la expansión, el analizador de flujo de datos extrae las relaciones de origen a destino con granularidad de columna.

Puedes alimentarlo con SQL de cualquier forma que exista en tu entorno: sentencias pegadas, archivos cargados, metadatos de la base de datos a través de JDBC o un manifiesto dbt para proyectos dbt dirigidos a Databricks. El resultado es un diagrama interactivo y explorable, además de datos de linaje estructurados en formato JSON, CSV, PNG o una respuesta de API REST.

Ejemplo: linaje a nivel de columna a través de una fusión Delta

FUSIONAR EN es el caballo de batalla de las canalizaciones de Delta Lake, y una instrucción donde el linaje a nivel de tabla es casi inútil, porque una sola fusión lee, compara, actualiza e inserta en una sola operación. Consideremos una inserción/actualización de capa oro:

MERGE INTO gold.customer_ltv AS t USING ( SELECT o.customer_id, SUM(o.amount) AS lifetime_value, MAX(o.order_ts) AS last_order_ts FROM silver.orders o WHERE o.status = 'completed' GROUP BY o.customer_id ) AS s ON t.customer_id = s.customer_id WHEN MATCHED THEN UPDATE SET t.lifetime_value = s.lifetime_value, t.last_order_ts = s.last_order_ts WHEN NOT MATCHED THEN INSERT (customer_id, lifetime_value, last_order_ts) VALUES (s.customer_id, s.lifetime_value, s.last_order_ts);

SQLFlow resuelve esto en relaciones precisas a nivel de columna. oro.valor_de_vida_del_cliente deriva de cantidad.de.pedidos.de.plata a través de SUMA(), a través de ambos ACTUALIZAR y el INSERTAR rama. último_pedido_ts deriva de plata.pedidos.orden_ts a través de MAX(). El alias de la subconsulta s Se resuelve; el linaje apunta a la tabla fuente real, no a la intermedia.

Igualmente importante es lo que SQLFlow clasifica como linaje indirecto: estado de los pedidos de plata nunca aterriza en el objetivo, pero el DÓNDE El filtro aplicado da forma a cada valor fusionado, y ID del cliente impulsa tanto el AGRUPACIÓN POR y la condición de coincidencia. SQLFlow modela el flujo de datos directo y la influencia indirecta como tipos de relación distintos y que se pueden alternar por separado. La mayoría de las herramientas de la competencia no hacen esa distinción, y es exactamente lo que necesitas cuando alguien pregunta "¿cambiar la estado ¿El vocabulario rompe el valor de vida del cliente? La respuesta honesta es sí, y solo el linaje consciente del impacto lo demuestra.

Migración hacia (o desde) Databricks

La migración es una de las razones más comunes por las que los equipos analizan Databricks SQL fuera de la plataforma. Unity Catalog no puede ayudarle a planificar una migración, ya que el linaje que necesita describe código que nunca se ha ejecutado en Databricks. Un flujo de trabajo basado en analizadores sí lo hace:

  1. Mapear la propiedad de origen. Ejecuta SQL heredado (Oracle, Teradata, SQL Server, incluyendo procedimientos almacenados y el SQL dinámico que contienen) a través de SQLFlow para obtener el gráfico de dependencias real. Esto te indicará qué migrar primero y qué código está obsoleto.
  2. Validar la reescritura. Analice el código SQL de Databricks modificado con el analizador de dialectos de Databricks y compare los gráficos de linaje. Si las fuentes de una columna de destino cambiaron entre la versión de Teradata y la versión Delta, habrá detectado un error de reescritura antes de su lanzamiento.
  3. Verifica que no haya nada huérfano. Tras la migración, se realiza un escaneo por lotes de ambos entornos: SQLFlow gestiona entornos de más de 100 bases de datos y más de un millón de columnas, con escaneos incrementales en un repositorio de linaje persistente.

La misma capacidad de comunicación entre dialectos funciona en sentido inverso o lateral: si parte de su almacén se está trasladando a Snowflake, Flujo de trabajo de linaje de copo de nieve Utiliza el mismo motor, por lo que ambas plataformas terminan en un gráfico comparable.

Exportación del linaje de datos de Databricks a DataHub, Purview u OpenMetadata

Las plataformas basadas en catálogos son buenos sistemas de registro para metadatos, y muchas organizaciones exigen uno en todas sus plataformas de datos. SQLFlow se integra como el motor de linaje subyacente: analiza el SQL, calcula el linaje indirecto y a nivel de columna, y envía el resultado a través de adaptadores de exportación dedicados para DataHub, Microsoft Purview y OpenMetadataLas exportaciones en formato JSON y CSV, además de una API REST, cubren cualquier necesidad personalizada.

Esta es también la solución práctica al problema de las múltiples plataformas: el linaje generado por dos extractores diferentes con dos modelos distintos es difícil de integrar en un solo gráfico. Un analizador sintáctico que genere un único gráfico para los 39 dialectos, exportado al catálogo que ya utiliza, evita este problema.

Formas de ejecutarlo

OpciónLo mejor paraNotas
Nube SQLFlowHoy lo estamos probando con una base de datos SQL real de Databricks.Nivel gratuito en el navegador; premium $49.99/mes
SQLFlow localEntornos regulados; SQL debe permanecer interno.Docker/Kubernetes, con capacidad para trabajar en aislamiento físico; $500/mes o $4,800 pago único por tipo de base de datos, instalable en dos servidores.
API REST / CLI / Biblioteca JavaAutomatización del linaje en CI o en su propia plataforma.Mismo motor, sin interfaz gráfica; widget JavaScript integrable con una API de más de 30 métodos para renderizar diagramas en su producto.

Preguntas frecuentes

¿SQLFlow reemplaza el linaje del catálogo de Unity?

No, lo complementa. Unity Catalog registra automáticamente el historial de las cargas de trabajo que se ejecutan a través de él. SQLFlow analiza el SQL de forma estática, abarcando el código antes de su ejecución (migraciones), el SQL que se ejecuta fuera de Unity Catalog y los entornos que incluyen Databricks y otras plataformas, para luego exportar el resultado a DataHub, Purview u OpenMetadata.

¿SQLFlow necesita acceso a mi espacio de trabajo o a mis datos de Databricks?

No. SQLFlow realiza un análisis estático del código SQL, utilizando opcionalmente los metadatos del esquema para resolver las referencias. Nunca lee filas en las tablas Delta. Con la edición local, incluso el texto SQL permanece dentro de la red.

¿Puede SQLFlow rastrear el linaje a través de las sentencias MERGE INTO?

Sí. Para un Delta FUSIONAR ENSQLFlow resuelve el USANDO subconsulta, asigna cada columna de destino a sus verdaderas columnas de origen a través de ambos ACTUALIZAR y INSERTAR ramifica y clasifica las condiciones de coincidencia y los filtros como linaje indirecto (de impacto).

¿Databricks es un dialecto distinto de Spark SQL en SQLFlow?

Sí. SQLFlow admite 39 dialectos, incluyendo Databricks y Spark SQL por separado, cada uno con su propio analizador sintáctico en la familia Spark SQL. Para consultas SQL escritas en Databricks, elija Databricks; también existe una herramienta dedicada. Página de linaje de Spark SQL para cargas de trabajo de Spark de código abierto.

¿Funciona con proyectos dbt en Databricks?

Sí. Importa el manifiesto dbt y SQLFlow generará un linaje a nivel de columna en todos tus modelos, utilizando el dialecto de Databricks para analizar el SQL compilado.

¿Cuánto cuesta SQLFlow?

SQLFlow Cloud comienza gratis; premium cuesta $49.99/mes. On-Premise cuesta $500/mes o $4,800 por única vez por tipo de base de datos seleccionado. Los detalles completos están en el página de precios.

Rastrea ahora tu linaje de Databricks.

Pegue una consulta Spark SQL o una operación Delta MERGE en el visualizador gratuito, o póngase en contacto con nosotros para analizar todo un conjunto de datos migrados.