spawn ssh -o StrictHostKeyChecking=no -o UserKnownHostsFile=/dev/null root@47.251.180.146 cat /www/wwwroot/kivtools.com/application/index/view/index/sql-lineage.html Warning: Permanently added '47.251.180.146' (ED25519) to the list of known hosts. ** WARNING: connection is not using a post-quantum key exchange algorithm. ** This session may be vulnerable to "store now, decrypt later" attacks. ** The server may need to be upgraded. See https://openssh.com/pq.html root@47.251.180.146's password: Analizar linaje SQL de columnas, tablas e impacto | KivTools

Analizador de linaje e impacto SQL

Pega SQL o importa un proyecto para seguir transformaciones y evaluar el impacto posterior. Los esquemas mejoran la resolución; el SQL dinámico puede quedar incompleto.

Se ejecuta localmente en tu navegador
SOLO LOCAL Column Lineage Static Analysis
Your SQL, schema and uploaded files are analyzed inside this browser. KivTools does not upload them for lineage analysis.
INPUT

Input workspace

Preparing local SQL engine…
No files selected Drop SQL, ZIP or dbt files here

Choose the actual SQL dialect when known for more accurate parsing.

OUTPUT

Lineage graph

Waiting for analysis
Export

Trace a column from source to output

Load the example or paste SQL, then analyze it with the local SQLGlot engine.

Direct Transformation Context

Details

Select a node in the graph

Node details, SQL fragments and text lineage paths appear here.

Downstream impact

Deterministic paths

Select a source column to count affected columns, views and final results.

SQL LINEAGE

Trace SQL dependencies before changing a query

Column lineage follows source columns through expressions, CTEs and views to each output. Impact analysis reverses those paths to show what a source change can affect.

What this analyzer resolves

SELECT, aliases, JOIN, subqueries, CTEs, UNION, aggregates, window functions, QUALIFY, MERGE, CREATE VIEW, CTAS and INSERT SELECT.

When schema information helps

CREATE TABLE definitions improve SELECT * expansion, ambiguous-column resolution and qualification.

Static-analysis limits

Dynamic SQL and stored procedures may be incomplete. Runtime database behavior is never executed.

Cómo leer el linaje de columnas de un SQL

Pega el SQL o sube archivos .sql, elige un dialecto y pulsa Analizar linaje. El analizador es SQLGlot 30.17.0 sobre Pyodide dentro de un Web Worker: los archivos del motor se descargan una vez —el indicador muestra Pyodide y después SQLGlot— y a partir de ahí todo el análisis ocurre en la página. No se envía nada a un servidor para analizarlo ni se contacta con ninguna base de datos.

El resultado es un grafo más un inspector. El modo Columnas sigue los valores desde las columnas de origen, a través de las expresiones, hasta cada salida; el modo Tablas reduce el grafo a dependencias entre tablas y vistas; el modo JOIN conserva solo las relaciones ON. Debajo, la tarjeta Cobertura del análisis indica por sentencia si quedó resuelta, parcial, no soportada o con error de análisis, y la tarjeta Avisos nombra lo que no se pudo resolver.

  1. Escribe o pega las sentencias, o pulsa Cargar ejemplo. La pestaña Esquema acepta definiciones CREATE TABLE: son lo que permite expandir SELECT * y cualificar columnas ambiguas.
  2. Deja el dialecto en Detectar automáticamente o elige uno de los 23 disponibles. La detección lee marcas propias del motor en el texto; cuando no son suficientes, la página pide que elijas un dialecto en vez de adivinar.
  3. Pulsa Analizar linaje. La cobertura y el grafo aparecen juntos; Cancelar detiene un análisis en curso y el motor se recarga para la siguiente ejecución.
  4. Explora: busca una tabla, una vista o una columna, filtra el entorno del nodo seleccionado con Amont/aval y activa Contexto para añadir las dependencias que se usan pero no se transmiten, como claves de filtro y de agrupación. Haz clic en un nodo para ver su fragmento SQL y su expresión; la tarjeta Impacto en aval cuenta las columnas, vistas y resultados finales que alcanzaría un cambio.
  5. Exporta JSON, CSV, PNG, SVG o GraphML. Todos los archivos se generan localmente en el navegador; el CSV tiene una fila por arista con origen, destino, relación, sentencia, archivo y expresión.

Qué resuelve el analizador y qué deja fuera

Cómo leer el grafo

Una arista directa significa que el destino sale tal cual del origen, como referencia simple o alias. Aparece un nodo de transformación cuando el valor se calcula: se agrega, se convierte, se concatena o se envuelve en una función, y el panel Detalles muestra la expresión correspondiente. Sobre el lienzo se indican los nodos y aristas de la vista actual, y los controles de zoom, ajuste, minimapa y pantalla completa actúan sobre el grafo dibujado.

Contexto añade dependencias que se usan sin transmitirse: columnas de filtros WHERE, claves de JOIN, claves de agrupación. Al activarlo el grafo se amplía de forma visible, por eso está separado de los botones de filtro del linaje.

Dialectos y detección

La lista va de ANSI / SQL genérico a PostgreSQL, MySQL, SQL Server / T-SQL, Oracle, SQLite, Teradata, Snowflake, BigQuery, Amazon Redshift, Databricks SQL, Microsoft Fabric, DuckDB, ClickHouse, Materialize, Apache Doris, Dremio, Spark SQL, Hive, Trino, Presto y Amazon Athena. El analizador sigue la elección: los caracteres de identificador entrecomillado, LIMIT / TOP / FETCH FIRST o la sintaxis MERGE suelen ser la razón de que el mismo texto se resuelva en un dialecto y falle en otro.

La detección se basa en pruebas. Una cabecera de volcado MySQL, ENGINE=InnoDB, un backtick o AUTO_INCREMENT, conversiones :: o COPY … FROM stdin, GO o [dbo]., VARCHAR2 y TABLESPACE, PRAGMA o TIMESTAMP_NTZ votan cada uno por un dialecto. Un SELECT sin sintaxis de proveedor no aporta pruebas, así que la página pide elegir en lugar de adivinar; el botón Ejemplo carga entonces una muestra escrita para el dialecto elegido, como QUALIFY en BigQuery y Snowflake, MERGE en Databricks o NVL en Oracle.

Cobertura, avisos y límites

La cobertura se informa por sentencia —resuelta, parcial, no soportada o error de análisis— con una confianza alta, media o baja, de modo que un script largo muestra qué partes entendió el motor. Los avisos señalan la causa concreta: SELECT * sin un esquema que lo expanda, una columna presente en dos tablas unidas, SQL dinámico o una sentencia que el motor de linaje aún no soporta del todo.

Todo es análisis estático: el SQL dinámico y los procedimientos almacenados solo se siguen hasta donde llega su texto, no se ejecuta ninguna sentencia y el detalle del resultado depende del esquema que aportes. Las cargas aceptan archivos de texto .sql, la importación de proyecto acepta una carpeta o un ZIP / proyecto dbt de hasta 25 MB comprimidos y 50 MB descomprimidos, y la entrada combinada está limitada a 50 MB —por encima de 5 MB aparece un aviso—. El motor son varios megabytes de WebAssembly, así que el primer análisis en caché fría tarda bastante más que los siguientes.

Herramientas recientes: