API REST de SQLFlow: Automatice la extracción del linaje de datos SQL.

A API de linaje de datos permite extraer el linaje mediante programación: se envía código SQL a través de HTTP y se recibe un gráfico de linaje estructurado en formato JSON, que enumera cada tabla y columna de origen, cada destino y las relaciones de transformación entre ellos. API REST de SQLFlow de Gudu Realiza esta función para 39 dialectos SQL, con granularidad a nivel de columna, incluyendo procedimientos almacenados y SQL dinámico. El mismo análisis que impulsa los diagramas interactivos de SQLFlow está disponible como datos de linaje estructurados a través de HTTP.

39Dialectos SQL, cada uno con un analizador sintáctico dedicado.
Nivel de columnaGráfico de linaje, directo e indirecto
JSONa través de HTTP: una solicitud POST, entrada SQL, salida gráfica.
CeroAcceso a sus datos: solo análisis estático.

Vea primero el resultado: Pegue una consulta en el Visualizador de linaje SQLFlow gratuitoLuego, exporta el gráfico como JSON para ver cómo se ve el linaje como datos antes de escribir una línea de código de integración.

¿Por qué incluir una API de linaje de datos en tu infraestructura tecnológica?

Los diagramas de linaje interactivos son la forma en que los humanos exploran el linaje. Pero los usos más valiosos del linaje son automatizados: bloquear una solicitud de extracción que daña silenciosamente un informe posterior, mantener actualizado el linaje de un catálogo de datos sin curación manual o responder a la pregunta "¿qué alimenta esta columna?" dentro de sus propias herramientas internas. Todos estos usos requieren el linaje como datos, bajo demanda, desde un servicio al que se pueda acceder.

El enfoque de SQLFlow es el análisis estático de SQL. La API analiza el texto SQL que le envías y nunca toca las filas de tus tablas, lo que hace que la revisión de seguridad sea breve: lo único que cruza el cable es el código SQL, y con el edición local incluso eso permanece dentro de su red. El motor subyacente es el Analizador SQL general, un compilador SQL comercial con interfaz gráfica desarrollado desde mediados de la década de 2000 y validado con aproximadamente 13.600 conjuntos de pruebas por dialecto, por lo que el linaje que se obtiene se construye a partir de un modelo semántico completo del SQL, no de una coincidencia de expresiones regulares.

Lo que devuelve la API REST de SQLFlow.

Conceptualmente, la API expone toda la superficie de análisis de SQLFlow como JSON sobre HTTP:

CapacidadTú envíasRegresarás
Gráfico de linajeTexto SQL más un identificador de dialectoEl gráfico de linaje completo a nivel de columna en formato JSON: tablas, columnas y relaciones de origen a destino.
Rastreo ascendente/descendenteUna tabla o columna de interésSolo el subgrafo que alimenta ese objeto (aguas arriba) o que es alimentado por él (aguas abajo), para un análisis de impacto específico.
Linaje a nivel de tablaTexto SQL, se solicita granularidad de tabla.Un gráfico de dependencias compacto entre tablas cuando el detalle de las columnas sería ruido.
Linaje directo versus linaje indirectoUna bandera en la solicitudRelaciones de flujo de datos puro, o adicionalmente las columnas que dan forma a los resultados a través de DÓNDE, UNIRSE, y AGRUPACIÓN POR cláusulas
Grafo de llamadas a procedimientos almacenadosCuerpos de procedimientos PL/SQL o T-SQLQué procedimientos invocan a cuáles, con el linaje rastreado a través de parámetros, tablas temporales y SQL dinámico.
Diagrama ERScripts DDLRelaciones de clave primaria/foránea inferidas como un modelo entidad-relación
ExportacionesUn trabajo analizadoJSON o CSV para máquinas, PNG para documentación y tickets

Cada solicitud nombra explícitamente su dialecto. SQLFlow incluye analizadores específicos de dialecto para 39 bases de datos y motores de consulta, desde Snowflake, BigQuery, Databricks y Redshift hasta Oracle, SQL Server, Teradata, Hive y Trino, por lo que la sintaxis específica del proveedor, como las tablas temporales T-SQL, se analiza tal como la define el proveedor, no aproximada por una gramática ANSI genérica. La lista completa se encuentra en el Descripción general de la herramienta de linaje de datos SQL.

Un ejemplo mínimo: POST SQL, recibir un gráfico de linaje

La interacción principal es una llamada HTTP. Se envía texto SQL y un dialecto; la respuesta es el gráfico de linaje. Las rutas de los puntos finales, la autenticación y la referencia completa de parámetros se encuentran en el Documentación de la API de SQLFlow; la forma del intercambio se ve así:

curl -s -X POST "$SQLFLOW_API/lineage" -H "Authorization: Bearer $SQLFLOW_TOKEN" --form "dbvendor=snowflake" --form 'sqltext=CREATE VIEW customer_ltv AS SELECT c.customer_id, SUM(o.amount) AS lifetime_value FROM customers c JOIN orders o ON o.customer_id = c.customer_id WHERE o.status = ''paid'' GROUP BY c.customer_id;'

La respuesta es un gráfico: una lista de objetos de la base de datos (tablas, vistas y sus columnas) y una lista de relaciones entre columnas. Recortado y simplificado para fines ilustrativos:

{ "relaciones": [ { "tipo": "directo", "objetivo": {"objeto": "valor_cliente", "columna": "valor_de_vida"}, "fuentes": [{"objeto": "pedidos", "columna": "cantidad", "vía": "SUMA"}] }, { "tipo": "directo", "objetivo": {"objeto": "valor_cliente", "columna": "id_cliente"}, "fuentes": [{"objeto": "clientes", "columna": "id_cliente"}] }, { "tipo": "indirecto", "objetivo": {"objeto": "valor_cliente", "columna": "valor_de_vida"}, "fuentes": [{"objeto": "pedidos", "columna": "estado", "vía": "DÓNDE"}] } ] }

Nótese la tercera relación. estado de los pedidos nunca aparece en la salida de la vista, pero filtra qué filas se suman, por lo que afecta absolutamente. valor_de_vida_de_vida. SQLFlow modela esto como linaje indirecto, distinto del flujo de datos directo y solicitable por separado. La mayoría de las herramientas de linaje no hacen esta distinción, y es precisamente lo que necesita un consumidor de análisis de impacto: dejar caer estado de los pedidos corrompería esta vista aunque ninguna columna de salida “proviene” de ella.

Caso de uso: comprobaciones de linaje en CI

La integración de mayor impacto es la que se ejecuta antes de que se envíe SQL defectuoso. En un trabajo de CI en cada solicitud de extracción que afecte a SQL:

  1. Envíe los archivos SQL modificados al punto final de linaje y obtenga el nuevo gráfico.
  2. Compárelo con el gráfico de la rama principal: qué columnas ganaron o perdieron fuentes, qué objetos posteriores cambiaron sus entradas.
  3. Si un cambio afecta a columnas que alimentan objetivos protegidos, como informes regulatorios o paneles de control ejecutivos, la verificación puede fallar o la diferencia puede publicarse como un comentario de revisión.

Debido a que el análisis es estático, esto funciona en código que nunca se ha ejecutado. Se detecta la dependencia rota en el momento de la revisión, no cuando falla la ejecución por lotes de las 2 de la mañana. El mismo patrón controla las migraciones de esquema: antes de una COLUMNA DE DESCARGA En el caso de los terrenos, una llamada de seguimiento descendente le indica cada objeto que consume la columna, directamente o a través de un filtro.

Caso de uso: alimentar su catálogo de datos

Las plataformas de catálogo son buenas para organizar metadatos, propiedad y descubrimiento; el linaje SQL a nivel de columna suele ser su punto débil. SQLFlow se integra como el motor de linaje: analiza tu entorno SQL y luego envía los resultados al catálogo que ya utilizas. Las implementaciones empresariales incluyen adaptadores de exportación listos para usar. DataHub, Microsoft Purview y OpenMetadataLas exportaciones en formato JSON y CSV permiten cualquier personalización. A gran escala, este proceso se ejecuta mediante escaneos por lotes e incrementales en conjuntos de más de 100 bases de datos y más de un millón de columnas, con un repositorio de linaje persistente, lo que garantiza que el catálogo se mantenga actualizado sin necesidad de que nadie realice el mantenimiento del linaje manualmente.

Caso de uso: linaje dentro de sus propias herramientas

Las plataformas de datos internas incorporan repetidamente las mismas funcionalidades: un panel para consultar el origen de las métricas, un verificador de obsolescencia y un mapa de dependencias de migración. En lugar de crear un analizador SQL, llame a la API desde su servicio y genere el gráfico como desee. Si prefiere el diagrama interactivo en lugar del JSON sin procesar, SQLFlow también incluye un widget JavaScript integrable con una API de más de 30 métodos que se puede incorporar a cualquier aplicación web; para la integración en la JVM solo en el backend, existe una biblioteca Java que expone el mismo motor. La API, el widget y la biblioteca devuelven resultados consistentes porque comparten un único analizador.

Convierta su SQL en un gráfico de linaje a través de HTTP.

Inspeccione el gráfico en el visualizador gratuito y, a continuación, envíe la misma consulta SQL a la API REST desde su canalización.

¿Cómo se compara esto con otras opciones de linaje programático?

Se trata de un servicio de análisis SQL, no de una biblioteca de análisis sintáctico ni de un recolector en tiempo de ejecución. Hay tres categorías que vale la pena conocer. Bibliotecas de análisis sintáctico de código abierto como sqllineage y sqlglot Son realmente útiles para analizar sentencias individuales dentro de un proceso de Python, y para la lógica simple de SELECT e INSERT pueden ser suficientes; la deficiencia surge con los procedimientos almacenados, SQL dinámico, casos límite de dialectos y resolución de vistas o expansión en estrella que requiere contexto de esquema. Estándares de linaje en tiempo de ejecución Al igual que OpenLineage, captura el linaje a partir de eventos de ejecución de trabajos, lo cual es excelente para el linaje a nivel de orquestador, ejecución por ejecución, pero solo ve el código que realmente se ejecutó, con la granularidad que proporciona la integración emisora. Plataformas basadas en catálogos Las API de linaje exponen el linaje que hayan ingerido, por lo que sus respuestas solo son tan profundas como el linaje ingerido. La API REST de SQLFlow es una herramienta diferente: un servicio especializado de análisis SQL que calcula el linaje a nivel de columna a partir del propio código, incluyendo las consultas SQL que nunca se ejecutaron y los procedimientos que otras herramientas omiten. Ambas categorías se complementan bien; muchos equipos utilizan SQLFlow para calcular el linaje y un catálogo para proporcionárselo a los usuarios finales.

Dónde se ejecuta la API: en la nube o en su propia red.

La API REST está disponible en ambas implementaciones de SQLFlow. Nube SQLFlow es el inicio más rápido: un SaaS con un nivel gratuito, premium por $49.99/mes, sin infraestructura que ejecutar. SQLFlow local Se implementa mediante Docker o Kubernetes dentro de su red, funciona de forma totalmente aislada y tiene un precio de $500/mes o $4,800 (pago único) por tipo de base de datos seleccionado, instalándose en dos servidores. Un patrón común es crear un prototipo de la integración en la nube y luego trasladar las mismas llamadas a la API a un host local para que el texto SQL nunca salga de su infraestructura.

Preguntas frecuentes

¿La API devuelve el linaje a nivel de columna o a nivel de tabla?

Ambas opciones. La profundidad predeterminada es a nivel de columna: para cada columna de salida, se obtienen las columnas de origen exactas y las funciones, uniones y operaciones de conjuntos entre ellas, distinguiendo entre linaje directo e indirecto. Se puede solicitar granularidad a nivel de tabla cuando solo se necesita un gráfico de dependencias compacto.

¿Qué dialectos SQL admite la API de linaje de datos?

39 dialectos, cada uno con su propio analizador: Snowflake, BigQuery, Redshift, Databricks, Oracle, SQL Server, PostgreSQL, MySQL, Teradata, Hive, Spark SQL, Trino y más. Debe especificar el dialecto en cada solicitud.

¿Puede analizar procedimientos almacenados y SQL dinámico?

Sí. Oracle PL/SQL y SQL Server T-SQL cuentan con analizadores procedimentales dedicados. El linaje se rastrea a través de los parámetros de los procedimientos y las tablas temporales, el SQL dinámico construido dentro de los procedimientos se resuelve y analiza, y la API puede devolver el gráfico de llamadas entre procedimientos.

¿La API necesita acceso a mis datos?

No. Realiza un análisis estático del texto SQL que usted envía y nunca lee los datos de las filas de la tabla. Con la edición local, el texto SQL también permanece dentro de su red.

¿Qué formatos de salida están disponibles?

JSON es el formato principal para uso programático; la exportación a CSV es adecuada para hojas de cálculo y cargas masivas, y la exportación a PNG genera el diagrama renderizado para la documentación. Las implementaciones empresariales incluyen adaptadores de exportación para DataHub, Microsoft Purview y OpenMetadata.

¿Dónde se encuentra la referencia completa de la API?

En docs.gudusoft.com, que abarca las rutas de los puntos finales, la autenticación, los parámetros de solicitud por capacidad y el esquema de respuesta completo. Para saber qué planes incluyen acceso a la API, consulte Precios de SQLFlow.

Obtén el linaje como JSON desde tu SQL.

Introduce una consulta en el visualizador gratuito para inspeccionar la estructura del gráfico y, a continuación, integra la API REST en tu flujo de trabajo.