Linaje de datos de Azure SQL: Linaje de columnas para Azure SQL y Synapse SQL

Linaje de datos de Azure SQL Es un mapa columna por columna que muestra cómo fluyen los datos a través del código T-SQL que se ejecuta en Azure SQL Database, Azure SQL Managed Instance y Synapse SQL: qué columnas de origen alimentan cada columna de destino, y a través de qué vistas, procedimientos almacenados, combinaciones y funciones. La forma más precisa de crearlo es analizando el propio código T-SQL. Flujo de SQL de Gudu Hace precisamente eso con un analizador de dialectos SQL de Azure dedicado, y puede enviar el linaje resultante a nivel de columna a Microsoft Purview para que aparezca junto con el resto de su entorno de Azure.

Pruébalo en 30 segundos: Pegue cualquier consulta o procedimiento almacenado de Azure SQL en el Visualizador de linaje SQLFlow gratuitoSeleccione el dialecto de Azure SQL y obtenga un diagrama de linaje interactivo a nivel de columna. La edición en la nube tiene un nivel gratuito.

Por qué el linaje de datos de Azure SQL es un problema de análisis

En Azure, la lógica de transformación que realmente da forma a sus datos rara vez reside en una definición de canalización. Reside en T-SQL: vistas superpuestas sobre vistas, procedimientos almacenados llamados desde actividades de Azure Data Factory, UNIR Sentencias, tablas temporales y SQL dinámico ensamblados en tiempo de ejecución. Un diagrama de linaje construido únicamente a partir de los metadatos de la canalización muestra los componentes, pero no lo que sucede dentro de ellos.

Saber eso informe.ingresos_mensuales se calcula como SUMA(pedidos.cantidad) filtrado por estado de los pedidos, algo tiene que leer el SQL de la misma manera que lo hace el motor de la base de datos: resolver cada referencia de columna a través de CTEs, subconsultas, vistas y SELECCIONAR * Se realiza una expansión y luego se rastrea el flujo de datos desde las columnas de origen hasta las de destino. Esto es análisis SQL estático, y para eso está diseñado SQLFlow. Solo lee el código SQL y los metadatos del esquema; nunca modifica las filas de las tablas.

Dónde se detiene Microsoft Purview y cómo el análisis sintáctico llena el vacío.

Microsoft Purview es realmente bueno en lo que una plataforma centrada en el catálogo debería hacer: escanear y clasificar activos en todo un entorno de Azure, mapear datos confidenciales y mostrar el linaje para las herramientas de movimiento de datos con las que se integra, como Azure Data Factory y las canalizaciones de Synapse. Si utiliza Azure a cualquier escala, Purview es un lugar razonable para el linaje. desplegado.

La brecha está en cómo se obtiene el linaje calculado. El linaje SQL automatizado de Purview tiene lagunas en T-SQL complejo: procedimientos almacenados con flujo de control, almacenamiento temporal en tablas temporales y SQL dinámico creado con sp_executesql Son precisamente esos lugares donde se agota la cobertura automatizada y se pierden los linajes. También son allí donde se producen las transformaciones de mayor riesgo.

La división del trabajo que funciona: SQLFlow analiza el código T-SQL y calcula el linaje a nivel de columna, incluyendo procedimientos y SQL dinámico, para luego exportarlo mediante su adaptador Microsoft Purview. SQLFlow realiza el cálculo; Purview se encarga de la visualización global. Usted mantiene un único catálogo, y las secciones con mayor cantidad de SQL dejan de estar vacías.

Qué extrae SQLFlow del código de Azure SQL

SQLFlow incluye 39 analizadores sintácticos específicos para cada dialecto, en lugar de una gramática ANSI genérica, y Azure SQL es uno de ellos, perteneciente a la familia T-SQL junto con SQL Server. Los grupos de SQL dedicados de Synapse también utilizan T-SQL, por lo que el mismo análisis se aplica a los scripts SQL de Synapse. Para el código de Azure SQL, SQLFlow produce:

  • Linaje a nivel de columna: Para cada columna de salida, se especifican las columnas de origen exactas que la alimentan, así como las funciones, conversiones de tipo, subconsultas, uniones y operadores de conjuntos intermedios. Las referencias se resuelven mediante expresiones de tabla comunes (CTE), vistas, subconsultas y expansión en estrella.
  • Linaje directo versus indirecto: una columna utilizada en un DÓNDE cláusula, UNIRSE condición o AGRUPACIÓN POR Aunque nunca llega al resultado, lo moldea. SQLFlow lo modela como un tipo de relación independiente y configurable, por lo que el análisis de impacto detecta columnas de filtro que la mayoría de las herramientas de linaje ignoran.
  • Linaje del procedimiento almacenado: Un analizador procedimental específico para la familia T-SQL rastrea el flujo de datos a través de los parámetros de los procedimientos y las tablas temporales, y genera un gráfico de llamadas interactivo que muestra qué procedimientos invocan a cuáles.
  • Resolución dinámica de SQL: SQL ensamblado dentro de un procedimiento y ejecutado con EJECUTIVO o sp_executesql Se resuelve y analiza en lugar de omitirse. Este es el punto ciego más común en el linaje automatizado.
  • Diagramas ER a partir de DDL: Relaciones de clave primaria y clave externa inferidas a partir de las definiciones de sus tablas, representadas como un diagrama entidad-relación.

La entrada puede consistir en código SQL pegado, archivos de script cargados o metadatos en tiempo real extraídos a través de JDBC, de modo que puede configurar SQLFlow para que se conecte a una base de datos SQL de Azure y deje que recopile por sí mismo las definiciones de vistas y procedimientos.

Ejemplo: un procedimiento T-SQL con SQL dinámico

Este es el tipo de procedimiento que rompe los escáneres de linaje automatizados. Almacena los datos en una tabla temporal y luego construye la tabla final. INSERTAR como una cadena y la ejecuta:

CREATE PROCEDURE dbo.usp_refresh_regional_sales @region NVARCHAR(50) AS BEGIN SELECT o.customer_id, SUM(o.amount) AS total_amount INTO #staged FROM dbo.orders AS o WHERE o.region = @region GROUP BY o.customer_id; DECLARE @sql NVARCHAR(MAX) = N' INSERT INTO dbo.regional_sales (customer_id, customer_name, total_amount) SELECT s.customer_id, c.customer_name, s.total_amount FROM #staged AS s JOIN dbo.customers AS c ON c.customer_id = s.customer_id;'; EXEC sp_executesql @sql; END

Un escáner que se detiene en el límite del procedimiento no informa nada útil aquí: la tabla de destino solo aparece dentro de un literal de cadena. SQLFlow analiza el cuerpo del procedimiento, resuelve el SQL dinámico y sigue el flujo de datos a través de la tabla temporal, produciendo:

  • ventas_regionales.monto_totalSUMA(pedidos.cantidad), a través de #staged.total_amount (linaje directo).
  • ventas_regionales.nombre_clienteclientes.nombre_del_cliente (linaje directo).
  • pedidos.región y las claves de unión clientes.id_cliente / pedidos.id_cliente Marcados como linaje indirecto: filtran y conectan el resultado sin aparecer en él.

Rebautizar pedidos.región Y una vista de metadatos de la canalización indica que nada depende de ello. La vista analizada muestra que este procedimiento comienza a actualizar silenciosamente una tabla vacía. Esa es la diferencia que supone el linaje a nivel de columna.

Integrando el linaje en el ámbito de Microsoft

Las implementaciones empresariales de SQLFlow incluyen adaptadores de exportación para Microsoft Purview, DataHub y OpenMetadata. El flujo de trabajo en un entorno Azure es sencillo: SQLFlow realiza escaneos por lotes de las bases de datos (escalable a entornos de más de 100 bases de datos y más de un millón de columnas, con escaneos incrementales y un repositorio de linaje persistente), calcula el linaje a nivel de columna a partir del código T-SQL real y lo publica en Purview. Los analistas y administradores siguen trabajando en el catálogo que ya utilizan; el linaje subyacente es de calidad de analizador sintáctico en lugar de ser de mejor esfuerzo.

Si prefiere crear su propia integración, el mismo linaje está disponible como exportación en formato JSON o CSV y a través de una API REST.

Opciones de implementación para entornos de Azure

EdiciónLo mejor paraCómo funciona
Nube SQLFlowLo estamos probando hoy con consultas reales.Software como servicio (SaaS) con una versión gratuita; la versión premium cuesta $49.99/mes. Pegue el código T-SQL o conecte las fuentes en el navegador.
SQLFlow localCargas de trabajo reguladas donde el texto SQL debe permanecer dentro de la red.Docker/Kubernetes en su propia suscripción o centro de datos de Azure, con aislamiento físico si es necesario. $500/mes o $4,800 por única vez por tipo de base de datos seleccionado, instalable en dos servidores.
API REST / Biblioteca Java / CLIAutomatizar el linaje dentro de la CI o una plataforma de datos.El mismo motor de análisis, al que se puede acceder desde pipelines y aplicaciones JVM.

Independientemente de la edición que utilice, la política de privacidad es la misma: SQLFlow realiza únicamente análisis estático del código SQL y nunca lee los datos de las filas de la tabla.

¿Azure SQL, SQL Server o alguna otra cosa?

Azure SQL y SQL Server local comparten la familia T-SQL, pero son dialectos separados en SQLFlow, cada uno con su propio analizador. Si su infraestructura está basada en SQL Server autohospedado, Linaje de datos de SQL Server La página cubre ese lado en detalle; los sistemas híbridos pueden analizar ambos en un solo repositorio. Y si aún está comparando enfoques (linaje nativo del catálogo, linaje basado en el registro de tiempo de ejecución, analizadores de código abierto), la encuesta de Las mejores herramientas de linaje de datos Explica dónde encaja cada categoría y cuándo el análisis sintáctico de SQL es la respuesta correcta.

En su interior, todo esto funciona con el motor General SQL Parser, desarrollado comercialmente desde mediados de la década de 2000 y validado con aproximadamente 13.600 conjuntos de datos de prueba SQL por dialecto. La profundidad en SQL complejo es el producto.

Preguntas frecuentes

¿SQLFlow es compatible con Azure Synapse SQL?

Sí. Los grupos SQL dedicados de Synapse utilizan T-SQL, y el analizador de dialectos SQL de SQLFlow para Azure cubre la familia T-SQL. Puede analizar los scripts, vistas y procedimientos almacenados SQL de Synapse del mismo modo que el código de Azure SQL Database.

¿Puede SQLFlow rastrear el linaje a través de SQL dinámico en procedimientos almacenados?

Sí. SQL ensamblado dentro de un procedimiento y ejecutado con EJECUTIVO o sp_executesql Se resuelve y analiza en lugar de omitirse, y el linaje se rastrea a través de los parámetros del procedimiento y las tablas temporales. SQLFlow también dibuja un gráfico de llamadas de invocaciones de procedimiento a procedimiento.

¿Cómo llega el linaje de SQLFlow al ámbito de Microsoft?

Mediante un adaptador de exportación integrado disponible en implementaciones empresariales, SQLFlow calcula el linaje a nivel de columna analizando su código T-SQL y lo publica en Purview para que aparezca en el catálogo junto con los análisis propios de Purview. Se ofrecen salidas en formato JSON, CSV y API REST para integraciones personalizadas.

¿SQLFlow necesita acceso a los datos de mis tablas de Azure SQL?

No. SQLFlow realiza un análisis estático del código SQL y, opcionalmente, lee los metadatos del esquema (definiciones de tablas, vistas y procedimientos) a través de JDBC. Nunca lee filas. La edición local mantiene incluso el texto SQL dentro de su red.

¿Qué aporta el linaje a nivel de columna con respecto a la vista a nivel de activo de Purview?

Precisión. El linaje a nivel de activo indica que una tabla alimenta un informe; el linaje a nivel de columna indica qué columnas específicas alimentan a cuáles, mediante qué transformaciones, y además señala las columnas que influyen en los resultados únicamente a través de filtros y uniones. Ese es el nivel de detalle que requieren el análisis de impacto y las preguntas de auditoría.

¿Cuánto cuesta SQLFlow?

SQLFlow Cloud comienza gratis; las cuentas premium cuestan $49.99/mes. SQLFlow 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.

Vea ahora el linaje de su Azure SQL.

Pegue su procedimiento T-SQL más complejo en el visualizador gratuito o póngase en contacto con nosotros para que le ayudemos a escanear su entorno de Azure y exportar los datos a Purview.