¿Qué es el linaje de datos?? Linaje de datos Es la ruta documentada que siguen los datos desde sus fuentes originales hasta sus destinos finales, incluyendo cada tabla, vista, trabajo y transformación por la que pasan en el camino. Responde a dos preguntas que todo equipo de datos se hace: “¿De dónde proviene este valor?” (procedencia) y “¿Qué depende de ello aguas abajo?” (análisis de impacto). En los sistemas basados en SQL, el linaje generalmente se extrae automáticamente analizando el código SQL que mueve y reformatea los datos.
Esta página ofrece una definición práctica para profesionales: qué registra realmente el linaje, la diferencia entre la granularidad a nivel de tabla y a nivel de columna, las relaciones directas e indirectas, las tres formas en que se construye el linaje y quién lo necesita realmente. Los ejemplos utilizan SQL, ya que en la mayoría de los almacenes de datos, SQL es donde reside la lógica de transformación.
Consulta el linaje en lugar de leer sobre él: Pegue cualquier consulta SQL en el Visualizador de linaje SQLFlow gratuito y obtenga un diagrama de linaje interactivo a nivel de columna en segundos.
Las dos preguntas que responde el linaje: análisis de procedencia e impacto
El linaje de datos es un gráfico que se lee en dos direcciones. Léalo. río arriba Y así se obtiene la procedencia: partiendo de una cifra en un informe, se retrocede a través de cada vista, unión y cálculo hasta llegar a las columnas de origen originales de las que se derivó. Esta es la dirección que interesa a auditores, reguladores y a cualquiera que esté depurando un dato erróneo.
Léelo río abajo Y así se obtiene un análisis de impacto: partiendo de una columna que se desea renombrar, reescribir o eliminar, se enumeran todas las tablas, vistas, procedimientos e informes que se verían afectados. Esta es la dirección que les interesa a los ingenieros antes de un cambio de esquema o una migración, cuando la alternativa es buscar en miles de scripts y esperar lo mejor.
Los términos a veces se usan de forma imprecisa. Estrictamente, procedencia es el rastro hacia atrás, análisis de impacto es el rastreo hacia adelante, y linaje de datos es el gráfico de dependencias subyacente que hace posibles ambos recorridos.
Un ejemplo concreto
Consideremos un extracto de almacén rutinario:
INSERT INTO monthly_revenue (month, total) SELECT DATE_TRUNC('month', o.order_date) AS month, SUM(o.amount) AS total FROM orders o JOIN customers c ON o.customer_id = c.id WHERE c.region = 'EMEA' GROUP BY DATE_TRUNC('month', o.order_date);
El linaje extraído de esta única afirmación ya tiene dos tipos de relación distintos:
- Linaje directo — Los datos fluyen realmente hacia la salida:
pedidos.fecha_del_pedidofuentesingresos_mensuales.mesa través deFECHA_TRUNC, ypedidos.cantidadfuentesingresos_mensuales.totala través deSUMA. - Linaje indirecto — columnas que nunca aparecen en el resultado final, pero que lo moldean:
clientes.regiónfiltra las filas ypedidos.id_clienteunido aclientes.iddecide qué filas coinciden. Cambia cómoregiónestá poblado y cada número eningresos_mensualescambios, aunqueregiónNo aparece en ningún lugar del resultado.
Una verdadera canalización consta de miles de sentencias como esta, estratificadas a través de vistas, procedimientos almacenados y modelos dbt. Las herramientas de linaje existen porque ningún ser humano puede recordar ese gráfico. Para ver más casos prácticos, incluyendo linaje de múltiples saltos y procedimientos almacenados, consulte nuestra ejemplos de linaje de datos Recorrido.
Linaje a nivel de tabla frente a linaje a nivel de columna
El linaje se presenta en dos niveles de granularidad, y la diferencia determina lo que realmente se puede hacer con él.
| Linaje a nivel de tabla | Linaje a nivel de columna | |
|---|---|---|
| Lo que registra | ingresos_mensuales está construido a partir de pedidos y clientes | ingresos_mensuales.total = SUMA(pedidos.cantidad), filtrado por clientes.región, se unió el ID_cliente = ID |
| Análisis de impacto | Aproximado: marca a todos los consumidores de la tabla, incluidos aquellos que la columna modificada nunca toca. | Preciso: solo marca a los consumidores a los que realmente alimenta la columna. |
| Respuestas de auditoría | “Este informe utiliza estas tablas” | “Esta cifra se calcula a partir de estos campos de origen, mediante estas transformaciones”. |
| Fuente típica | Metadatos del orquestador de trabajos, registros de consultas | Analizar el propio SQL |
El linaje a nivel de tabla es barato de recopilar y útil para un primer mapa de una tubería. Pero la mayoría de las preguntas reales son preguntas de columna: qué informes utilizan correo electrónico, que los campos de origen alimentan esta cifra regulada, es cualquier cosa que lea la columna que queremos eliminar. Eso requiere resolver cada columna de salida a través de uniones, subconsultas, CTE, vistas y SELECCIONAR * expansión: trabajo del analizador, no extracción de registros. La mecánica se cubre en profundidad en nuestra guía para linaje de datos a nivel de columna.
Cómo se construye el linaje de datos: tres enfoques
Todas las herramientas de linaje disponibles en el mercado utilizan una combinación de tres técnicas.
| Acercarse | Cómo funciona | Fuerte en | Débil en |
|---|---|---|---|
| Análisis SQL estático | Analizar el código SQL (vistas, procedimientos, scripts ETL, modelos dbt) y derivar el grafo de dependencias a partir de la sintaxis y la semántica. | Precisión a nivel de columna; cubre todas las rutas de código, incluidas las que no se han ejecutado recientemente; no necesita acceso a los datos. | Se necesita un analizador sintáctico que realmente entienda cada dialecto SQL; las transformaciones que no son SQL (Python, Spark DataFrames) están fuera del alcance. |
| Basado en tiempo de ejecución/registro de consultas | Observe lo que realmente se ejecutó: historial de consultas del almacén de datos, eventos del orquestador (el modelo OpenLineage/Marquez). | Captura de ejecuciones reales en trabajos heterogéneos, incluidos los que no utilizan SQL; información fidedigna sobre "qué se ejecutó y cuándo". | Solo ve las rutas que se ejecutaron durante el período de observación; la granularidad suele ser a nivel de tabla; los registros aún contienen SQL que debe analizarse para obtener detalles de las columnas. |
| Documentación manual | Los analistas registran las correspondencias en hojas de cálculo o en un catálogo a mano. | Contexto empresarial y definiciones que ningún analizador sintáctico puede inferir | Queda obsoleto al día siguiente de ser escrito; propenso a errores a cualquier escala real. |
Estas herramientas se complementan, no compiten entre sí: el linaje de ejecución indica qué se ejecutó, la curación manual aporta significado empresarial y el análisis SQL estático proporciona el mapa lógico a nivel de columna. Dado que la mayor parte de la lógica de transformación del almacén de datos se basa en SQL, el análisis estático realiza el trabajo más complejo, y su calidad depende directamente de la calidad de su analizador. Flujo de SQL de Gudu Adopta este enfoque con 39 analizadores sintácticos específicos para cada dialecto (Snowflake, BigQuery, Oracle, SQL Server, Teradata y 34 más), basados en un compilador SQL desarrollado desde mediados de la década de 2000 y validado con aproximadamente 13 600 conjuntos de pruebas por dialecto. Esta profundidad es lo que le permite manejar el SQL que los analizadores sintácticos más sencillos no pueden procesar: procedimientos almacenados de Oracle PL/SQL y T-SQL, SQL dinámico compilado en tiempo de ejecución, tablas temporales y pilas de vistas.
¿Para qué se utiliza el linaje de datos?
En la práctica, existen cuatro casos de uso principales para la adopción de sistemas de linaje:
- Cumplimiento normativo. La norma BCBS 239 exige que los bancos demuestren cómo se agregan las cifras de riesgo a partir de los datos de origen; las obligaciones de mapeo de datos del RGPD requieren saber a qué sistemas y tablas derivadas se transfieren los datos personales. La procedencia a nivel de columna es el elemento que satisface ambos requisitos: «estos campos de origen exactos, a través de estas transformaciones».
- Gobernanza de datos. Los catálogos y glosarios se vuelven obsoletos cuando el linaje se mantiene manualmente. El linaje extraído automáticamente mantiene actualizado el mapa de dependencias a medida que cambia el código y puede alimentar directamente las plataformas de catálogo; SQLFlow, por ejemplo, incluye adaptadores de exportación para DataHub, Microsoft Purview y OpenMetadata.
- Depuración y análisis de la causa raíz. Cuando un panel muestra un número erróneo, el linaje convierte "buscar en todos los scripts que mencionan esta tabla" en "retroceder desde esta columna". Horas en lugar de días.
- Migración y modernización. Antes de migrar de Oracle o Teradata a Snowflake, BigQuery o Databricks, el gráfico de dependencias indica qué debe migrarse junto, en qué orden y qué objetos ya no se leen y pueden eliminarse en lugar de migrarse.
Una heurística útil: Si tu equipo alguna vez ha retrasado un cambio de esquema porque nadie estaba seguro de qué podría romper, ya necesitas el linaje; simplemente lo estás calculando manualmente, lentamente y con errores.
Analiza tu propio código SQL, no solo el ejemplo.
Introduce una consulta y obtén un diagrama de linaje interactivo a nivel de columna en segundos.
Preguntas frecuentes
¿Qué es el linaje de datos en términos sencillos?
Es el mapa que muestra el origen y el destino de tus datos: qué fuentes alimentan cada tabla o informe, y qué transformaciones se producen entre medias. Imagínalo como un gráfico de dependencias de datos, que se puede recorrer hacia atrás (procedencia) y hacia adelante (análisis de impacto).
¿Cuál es la diferencia entre linaje de datos y procedencia de datos?
La procedencia es el rastreo inverso desde un producto hasta su origen. El linaje es el gráfico de dependencias completo, que permite determinar la procedencia en una dirección y analizar el impacto en la otra. En el uso cotidiano, ambos términos se superponen, pero la distinción precisa radica en si se trata de un gráfico o de un recorrido.
¿Qué es el linaje de datos indirecto?
El linaje indirecto abarca columnas que influyen en un resultado sin aparecer en él: columnas utilizadas en DÓNDE filtros, UNIRSE condiciones y AGRUPACIÓN POR cláusulas. Modifican todos los valores de salida, por lo que el análisis de impacto que las ignora es incompleto. SQLFlow modela el linaje indirecto como un tipo de relación independiente y configurable; la mayoría de las herramientas de linaje no hacen esta distinción.
¿Es necesario el linaje de datos para cumplir con el RGPD o la norma BCBS 239?
Ninguno de los dos marcos normativos considera el "linaje" como una tecnología obligatoria, pero ambos requieren lo que este proporciona: la norma BCBS 239 exige a los bancos que demuestren cómo se agregan los datos de riesgo a partir de sus fuentes, y el mapeo de datos del RGPD exige saber por dónde fluyen los datos personales. El linaje a nivel de columna es la forma estándar de generar esa evidencia a gran escala.
¿Cómo se crea automáticamente el linaje de datos?
Inyecte su código SQL a una herramienta de análisis estático de linaje. Con SQLFlow, puede pegar código SQL, cargar archivos, conectarse a una base de datos mediante JDBC, importar un manifiesto dbt o ingerir el historial de consultas de Snowflake o los registros de consultas de Redshift; analiza el código y genera diagramas interactivos a nivel de columna, además de exportaciones JSON/CSV y una API REST. Las implementaciones empresariales escanean por lotes entornos de más de 100 bases de datos y más de un millón de columnas.
¿La creación del linaje requiere acceso a mis datos reales?
No con el análisis estático. El análisis sintáctico de SQL requiere el código y, opcionalmente, los metadatos del esquema (definiciones de tablas y columnas), nunca las filas de las tablas. La edición local de SQLFlow, además, mantiene el texto SQL dentro de la red, por lo que resulta ideal para bancos y otros entornos regulados.
Vea el linaje oculto en su SQL.
Pegue una consulta en el visualizador gratuito y obtenga un diagrama de linaje a nivel de columna de inmediato, o explore el completo Herramienta de linaje de datos SQL para escaneo de toda la propiedad.