{"id":6746,"date":"2026-07-12T02:05:28","date_gmt":"2026-07-12T10:05:28","guid":{"rendered":"https:\/\/www.gudusoft.com\/column-level-data-lineage\/"},"modified":"2026-07-13T19:02:19","modified_gmt":"2026-07-14T03:02:19","slug":"column-level-data-lineage","status":"publish","type":"page","link":"https:\/\/www.gudusoft.com\/es\/linaje-de-datos-a-nivel-de-columna\/","title":{"rendered":"Linaje de datos a nivel de columna: qu\u00e9 es y por qu\u00e9 el nivel de tabla no es suficiente."},"content":{"rendered":"<p><strong>Linaje de datos a nivel de columna<\/strong> Asigna cada columna de salida de una consulta, vista o informe a las columnas de origen exactas que la producen, junto con cada transformaci\u00f3n aplicada en el proceso: funciones, conversiones, uniones, agregaciones y filtros. Donde el linaje a nivel de tabla dice \u201ctabla <code>pedidos<\/code> tabla de alimentaci\u00f3n <code>informe_de_ingresos<\/code>\u201c, el linaje a nivel de columna dice \u201c<code>informe_de_ingresos.total<\/code> es <code>SUMA(pedidos.cantidad)<\/code>, filtrado por <code>estado de los pedidos<\/code> y agrupados por <code>clientes.regi\u00f3n<\/code>\u201cEs el nivel de detalle que permite que el an\u00e1lisis de impacto, la depuraci\u00f3n y las respuestas de auditor\u00eda sean precisas en lugar de aproximadas.\u201d<\/p>\n\n\n\n<div class=\"gd-stats\">\n<div class=\"gd-stat\"><b>Nivel de columna<\/b><span>no solo a nivel de mesa<\/span><\/div>\n<div class=\"gd-stat\"><b>Directo + indirecto<\/b><span>Linaje fdd y fddi<\/span><\/div>\n<div class=\"gd-stat\"><b>39<\/b><span>Dialectos SQL analizados<\/span><\/div>\n<div class=\"gd-stat\"><b>Est\u00e1tico<\/b><span>Lee SQL, nunca tus datos.<\/span><\/div>\n<\/div>\n\n\n\n<p>Esta p\u00e1gina define el t\u00e9rmino, muestra una columna de salida en una consulta real con una CTE, una uni\u00f3n y una agregaci\u00f3n, y explica por qu\u00e9 extraer esta informaci\u00f3n requiere an\u00e1lisis sem\u00e1ntico SQL en lugar de coincidencia de patrones. Si el concepto de linaje es nuevo para usted, comience con <a href=\"https:\/\/www.gudusoft.com\/es\/que-es-el-linaje-de-datos\/\">Qu\u00e9 es el linaje de datos y por qu\u00e9 es importante.<\/a>, luego vuelva aqu\u00ed para obtener los detalles a nivel de columna.<\/p>\n\n\n\n<div class=\"wp-block-group gd-callout is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n\n<p><strong>Compru\u00e9belo usted mismo en SQL:<\/strong> Pegue cualquier consulta en el <a href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=column-level-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">Visualizador de linaje SQLFlow gratuito<\/a> y haga clic en cualquier columna de salida para resaltar su ruta completa. El nivel gratuito de Cloud es suficiente para seguir el ejemplo.<\/p>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">\u00bfQu\u00e9 registros de linaje de datos a nivel de columna?<\/h2>\n\n\n\n<p>Por cada columna que una instrucci\u00f3n escribe o devuelve, un gr\u00e1fico de linaje a nivel de columna almacena tres cosas:<\/p>\n\n\n\n<ul><li><strong>Columnas de origen:<\/strong> las columnas f\u00edsicas cuyos valores fluyen hacia la salida, resueltas a trav\u00e9s de cualquier n\u00famero de capas intermedias como CTE, subconsultas, vistas y tablas temporales.<\/li>\n<li><strong>Transformaciones:<\/strong> las operaciones aplicadas en la ruta, por ejemplo <code>SUMA()<\/code>, <code>ELENCO()<\/code>, <code>CASO<\/code> expresiones, funciones de cadena y operadores de conjuntos como <code>UNI\u00d3N<\/code>.<\/li>\n<li><strong>Tipo de relaci\u00f3n:<\/strong> Se trata de determinar si el valor de una columna de origen se refleja directamente en el resultado (linaje directo) o si simplemente lo modifica mediante un filtro, una uni\u00f3n o una agrupaci\u00f3n (linaje indirecto). M\u00e1s adelante se explica esta distinci\u00f3n, ya que la mayor\u00eda de las herramientas la omiten.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Por qu\u00e9 el linaje a nivel de tabla no es suficiente<\/h2>\n\n\n\n<p>El linaje a nivel de tabla es econ\u00f3mico de producir y realmente \u00fatil para una primera orientaci\u00f3n: traza el mapa de qu\u00e9 tablas y vistas alimentan a cu\u00e1les. El problema es que las preguntas que los equipos de datos realmente necesitan que se respondan son preguntas sobre columnas, y la granularidad de la tabla obliga a sobreaproximar:<\/p>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Pregunta<\/th><th>Respuesta a nivel de tabla<\/th><th>Respuesta a nivel de columna<\/th><\/tr><\/thead><tbody>\n<tr><td>\u00bfQu\u00e9 sucede si cambio el nombre? <code>clientes.email<\/code>?<\/td><td>Cada objeto que lee <code>clientes<\/code> \u2014 a menudo docenas de falsos positivos<\/td><td>Solo las opiniones, procedimientos e informes que hacen referencia <code>correo electr\u00f3nico<\/code> espec\u00edficamente<\/td><\/tr>\n<tr><td>\u00bfDe d\u00f3nde proviene este n\u00famero err\u00f3neo en el panel de control?<\/td><td>\u201cEn alg\u00fan punto r\u00edo arriba de estas cuatro mesas\u201d<\/td><td>La cadena de expresiones exacta desde el campo del panel de control hasta las columnas de origen f\u00edsico.<\/td><\/tr>\n<tr><td>\u00bfQu\u00e9 resultados contienen informaci\u00f3n de identificaci\u00f3n personal (PII)? <code>n\u00famero de seguridad social<\/code>?<\/td><td>Cada tabla aguas abajo de la tabla de origen, independientemente de si <code>n\u00famero de seguridad social<\/code> propaga<\/td><td>El conjunto preciso de columnas <code>n\u00famero de seguridad social<\/code> El valor realmente alcanza<\/td><\/tr>\n<tr><td>\u00bfPodemos eliminar esta columna de preparaci\u00f3n?<\/td><td>Desconocido: la tabla est\u00e1 referenciada, as\u00ed que suponga que no.<\/td><td>S\u00ed, si ninguna columna posterior lo lee directa o indirectamente.<\/td><\/tr>\n<\/tbody><\/table><\/figure>\n\n\n\n<p><strong class=\"gd-lead-in\">El coste de los falsos positivos no es una cuesti\u00f3n te\u00f3rica.<\/strong> Si un cambio de esquema afecta a 40 paneles de control posteriores a nivel de tabla, pero solo 3 de ellos utilizan la columna modificada, los otros 37 se someten a pruebas innecesarias o, peor a\u00fan, el equipo aprende a ignorar la herramienta de linaje. La precisi\u00f3n es lo que garantiza la fiabilidad del linaje, y la precisi\u00f3n reside en el nivel de columna.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Un ejemplo pr\u00e1ctico: una columna a trav\u00e9s de una CTE, una uni\u00f3n y una agregaci\u00f3n.<\/h2>\n\n\n\n<p>Aqu\u00ed hay una consulta peque\u00f1a pero realista. El objetivo: rastrear exactamente d\u00f3nde <code>ingresos_totales<\/code> proviene de.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>WITH recent_orders AS ( SELECT o.order_id, o.customer_id, o.amount, o.status FROM orders o WHERE o.order_date &gt;= DATE &#039;2026-01-01&#039; ) SELECT c.region, SUM(r.amount) AS total_revenue FROM recent_orders r JOIN customers c ON c.customer_id = r.customer_id WHERE r.status = &#039;COMPLETED&#039; GROUP BY c.region;<\/code><\/pre>\n\n\n\n<p>Resolviendo <code>ingresos_totales<\/code> Se necesitan tres saltos:<\/p>\n\n\n\n<ol><li><code>ingresos_totales<\/code> se define como <code>SUMA(r.cantidad)<\/code>, por lo que su valor proviene de la columna <code>cantidad<\/code> de la relaci\u00f3n aliased <code>o<\/code>, pasado a trav\u00e9s de una funci\u00f3n agregada.<\/li>\n<li><code>o<\/code> No es una tabla. Es la CTE. <code>pedidos_recientes<\/code>, cuyo <code>cantidad<\/code> columna es un paso de <code>pedidos.cantidad<\/code>El alias, la CTE y la proyecci\u00f3n de columna deben resolverse antes de conocer la fuente f\u00edsica.<\/li>\n<li>Por lo tanto, el linaje directo completo es una sola columna f\u00edsica: <code>pedidos.cantidad<\/code> \u2192 <code>Cantidad de pedidos recientes<\/code> \u2192 <code>SUMA()<\/code> \u2192 <code>ingresos_totales<\/code>.<\/li><\/ol>\n\n\n\n<p>Pero otras cinco columnas dan forma al resultado sin aparecer nunca en \u00e9l: <code>pedidos.fecha_del_pedido<\/code> Filtra las filas dentro de la CTE, <code>estado de los pedidos<\/code> Los filtra de nuevo en el exterior. <code>D\u00d3NDE<\/code>, <code>pedidos.id_cliente<\/code> y <code>clientes.id_cliente<\/code> decide qu\u00e9 filas se unen y <code>clientes.regi\u00f3n<\/code> decide c\u00f3mo se agrupan las filas en cubos agregados. Cambie la sem\u00e1ntica de cualquiera de estos y <code>ingresos_totales<\/code> cambios, aunque ninguno de sus valores llegue a la salida. Una b\u00fasqueda de texto te dir\u00eda &quot;esta consulta afecta a <code>pedidos<\/code> y <code>clientes<\/code>\u201cEl linaje a nivel de columna indica qu\u00e9 columna contiene el valor y cu\u00e1les cinco lo rigen.<\/p>\n\n\n\n<div class=\"wp-block-group gd-panel-navy is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n\n<h2 class=\"wp-block-heading\">Linaje directo versus indirecto: la distinci\u00f3n fdd\/fddi<\/h2>\n\n\n\n<p>Esos dos tipos de relaci\u00f3n merecen nombres separados. En el modelo de linaje de Gudu SQLFlow, <strong>flujo de datos directo<\/strong> (etiquetado <code>fdd<\/code>) significa que el valor de una columna de origen fluye hacia la columna de destino, posiblemente transformado por funciones, conversiones o agregaciones. <strong>flujo de datos indirecto<\/strong> (etiquetado <code>fddi<\/code>) significa que una columna de origen influye en el destino sin aportar su valor: columnas utilizadas en <code>D\u00d3NDE<\/code> predicados, <code>UNIRSE<\/code> condiciones, <code>AGRUPACI\u00d3N POR<\/code> claves y cl\u00e1usulas similares.<\/p>\n\n\n\n<p>SQLFlow modela estos elementos como tipos de relaciones distintos y configurables por separado en el diagrama. Desactive el linaje indirecto para ver la procedencia del valor puro, la vista que un auditor necesita para comprobar qu\u00e9 campos de origen aparecen en un informe regulado. Act\u00edvelo para ver el impacto total, la vista que un ingeniero necesita antes de modificar una columna, ya que eliminar una columna de filtro cambia silenciosamente todos los agregados posteriores. La mayor\u00eda de las herramientas de linaje de la competencia no hacen esta distinci\u00f3n: o bien solo informan del flujo directo y no tienen en cuenta el impacto real, o bien lo agrupan todo y reintroducen los falsos positivos que se movieron al nivel de columna para evitarlos.<\/p>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Por qu\u00e9 esto requiere an\u00e1lisis sem\u00e1ntico, no expresiones regulares.<\/h2>\n\n\n\n<p>Resulta tentador extraer el linaje mediante la coincidencia de patrones en el texto SQL para nombres de tablas y columnas. Sin embargo, ese enfoque colapsa precisamente con las construcciones que abundan en el SQL de producci\u00f3n:<\/p>\n\n\n\n<ul><li><strong>Expansi\u00f3n estelar.<\/strong> <code>SELECCIONAR *<\/code> No se nombran columnas en absoluto. Qu\u00e9 columnas fluyen depende del esquema de la relaci\u00f3n subyacente en el momento del an\u00e1lisis y, en una uni\u00f3n, de los esquemas combinados de todas las relaciones unidas. Resolviendo <code>*<\/code> Requiere metadatos m\u00e1s reglas de alcance; ning\u00fan patr\u00f3n de texto puede generar la lista de columnas.<\/li>\n<li><strong>Ver resoluci\u00f3n.<\/strong> Cuando una consulta lee <code>v_sales.net_amount<\/code>El verdadero linaje se desarrolla a trav\u00e9s de la definici\u00f3n de la vista, y las vistas se superponen habitualmente. El analizador debe expandir cada definici\u00f3n recursivamente y combinar las asignaciones de columnas, una operaci\u00f3n sobre un modelo sem\u00e1ntico resuelto, no sobre cadenas de caracteres.<\/li>\n<li><strong>Alcance y ambig\u00fcedad.<\/strong> Una columna sin reservas como <code>estado<\/code> En una uni\u00f3n de tres tablas, pertenece a una \u00fanica relaci\u00f3n, determinada por las reglas de \u00e1mbito de SQL y los esquemas de las tablas. Un error de c\u00e1lculo corrompe silenciosamente el grafo de linaje.<\/li>\n<li><strong>Expresiones.<\/strong> <code>COALESCE(ax, por)<\/code>, <code>CASO<\/code> Las ramas y las funciones de ventana definen cada una un conjunto diferente de columnas contribuyentes. Solo un \u00e1rbol de expresiones real las captura.<\/li>\n<li><strong>Dialectos.<\/strong> Oracle <code>CONECTA POR<\/code>, T-SQL <code>PRODUCCI\u00d3N<\/code> cl\u00e1usula, de BigQuery <code>EXCEPTO<\/code> En una lista de estrellas: cada dialecto tiene una sintaxis que una gram\u00e1tica ANSI gen\u00e9rica analiza incorrectamente. SQLFlow incluye 39 analizadores espec\u00edficos para cada dialecto en lugar de una \u00fanica gram\u00e1tica com\u00fan.<\/li><\/ul>\n\n\n\n<p>En resumen, el linaje preciso a nivel de columna es un problema del compilador. SQLFlow se basa en el analizador SQL general, un compilador SQL completo (analizador l\u00e9xico, analizador sint\u00e1ctico, resolutor sem\u00e1ntico, analizador de flujo de datos) desarrollado comercialmente desde mediados de la d\u00e9cada de 2000 y validado con aproximadamente 13\u00a0600 conjuntos de pruebas SQL por dialecto. El mismo motor resuelve los casos m\u00e1s complejos: cuerpos de procedimientos almacenados en Oracle PL\/SQL y SQL Server T-SQL, linaje a trav\u00e9s de par\u00e1metros de procedimientos y tablas temporales, y SQL din\u00e1mico ensamblado dentro de procedimientos.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Obtener el linaje a nivel de columna en la pr\u00e1ctica<\/h2>\n\n\n\n<p>Gudu SQLFlow es una herramienta automatizada <a href=\"https:\/\/www.gudusoft.com\/es\/herramienta-de-linaje-de-datos-sql\/\">Herramienta de linaje de datos SQL<\/a> Este programa genera el gr\u00e1fico a nivel de columna descrito en esta p\u00e1gina a partir de cualquier consulta SQL: consultas pegadas, archivos cargados, metadatos de bases de datos en tiempo real a trav\u00e9s de JDBC, archivos de manifiesto dbt o historial de consultas de Snowflake y registros de consultas de Redshift. El resultado es un diagrama interactivo que permite explorar cada columna, adem\u00e1s de datos de linaje estructurados en formato JSON o CSV, una exportaci\u00f3n en formato PNG y una API REST.<\/p>\n\n\n\n<p>A escala empresarial, realiza escaneos por lotes de m\u00e1s de 100 bases de datos y m\u00e1s de un mill\u00f3n de columnas, ejecuta escaneos incrementales en un repositorio de linaje persistente y exporta a DataHub, Microsoft Purview y OpenMetadata, de modo que el linaje a nivel de columna puede residir dentro del cat\u00e1logo que ya utiliza. Dado que el an\u00e1lisis es est\u00e1tico, SQLFlow solo lee el c\u00f3digo SQL y los metadatos del esquema, nunca las filas de sus tablas, y la edici\u00f3n local mantiene el texto SQL completamente dentro de su red.<\/p>\n\n\n\n<p>Para ver m\u00e1s trazas como la anterior, a trav\u00e9s de subconsultas, vistas, procedimientos almacenados y modelos dbt, consulte nuestra biblioteca de <a href=\"https:\/\/www.gudusoft.com\/es\/ejemplos-de-linaje-de-datos\/\">ejemplos de linaje de datos resueltos<\/a>.<\/p>\n\n\n\n<div class=\"wp-block-group gd-panel-navy gd-cta is-layout-constrained\"><div class=\"wp-block-group__inner-container\">\n\n<h2 class=\"wp-block-heading\">Consulta el linaje a nivel de columna en tu propio SQL.<\/h2>\n\n\n<p>Pegue una consulta y haga clic en cualquier columna de resultados para rastrear su ruta completa, tanto directa como indirecta, hasta el origen.<\/p>\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-3\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=column-level-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">Prueba SQLFlow gratis<\/a><\/div>\n\n\n<div class=\"wp-block-button is-style-outline\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.gudusoft.com\/es\/herramienta-de-linaje-de-datos-sql\/\">Consulte la herramienta de linaje.<\/a><\/div>\n<\/div>\n\n<\/div><\/div>\n\n\n\n<h2 class=\"wp-block-heading\">Preguntas frecuentes<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfCu\u00e1l es la diferencia entre el linaje de datos a nivel de tabla y a nivel de columna?<\/h3>\n\n\n<p>Los registros de linaje a nivel de tabla indican qu\u00e9 tablas y vistas alimentan a cu\u00e1les, con una arista por cada par de objetos. Los registros de linaje a nivel de columna indican, para cada columna de salida, las columnas de origen exactas que la alimentan y las transformaciones aplicadas. La granularidad de las columnas elimina los falsos positivos del an\u00e1lisis de impacto y garantiza la exactitud de las respuestas de auditor\u00eda.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfQu\u00e9 es el linaje indirecto (de impacto)?<\/h3>\n\n\n<p>El linaje indirecto vincula una columna de origen con una salida a la que influye sin aportar su valor: columnas en cl\u00e1usulas WHERE, condiciones JOIN, claves GROUP BY y predicados de agregaci\u00f3n. SQLFlow lo modela como un tipo de relaci\u00f3n independiente (fddi) que se puede activar o desactivar independientemente del flujo de datos directo (fdd) en el diagrama.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfPuedo extraer el linaje a nivel de columna con expresiones regulares o grep?<\/h3>\n\n\n<p>No de forma fiable. La expansi\u00f3n en estrella, la resoluci\u00f3n de vistas, los nombres de columna no cualificados y expresiones como CASE o COALESCE requieren un modelo sem\u00e1ntico basado en un an\u00e1lisis sint\u00e1ctico real de la consulta SQL y los metadatos del esquema. La coincidencia de patrones puede encontrar nombres de tablas, pero no puede determinar qu\u00e9 columnas se almacenan en cada lugar.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfEl linaje a nivel de columna funciona a trav\u00e9s de vistas y SELECT *?<\/h3>\n\n\n<p>S\u00ed, si la herramienta las resuelve. SQLFlow expande SELECT * contra los metadatos del esquema y resuelve recursivamente las referencias de columna a trav\u00e9s de vistas, CTE y subconsultas, de modo que el linaje va desde la columna de salida final hasta las columnas de origen f\u00edsicas.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfFunciona con procedimientos almacenados y SQL din\u00e1mico?<\/h3>\n\n\n<p>S\u00ed. SQLFlow cuenta con analizadores procedimentales espec\u00edficos para Oracle PL\/SQL y SQL Server T-SQL, rastrea el linaje a trav\u00e9s de los par\u00e1metros de los procedimientos y las tablas temporales, resuelve el SQL din\u00e1mico ensamblado dentro de los procedimientos y genera un gr\u00e1fico de llamadas de invocaciones entre procedimientos.<\/p>\n\n\n\n<h3 class=\"wp-block-heading\">\u00bfC\u00f3mo puedo obtener el linaje a nivel de columna para mi propia consulta SQL?<\/h3>\n\n\n<p>Al pegar una consulta en la versi\u00f3n gratuita de SQLFlow Cloud, el diagrama de columnas se mostrar\u00e1 en el navegador. Para bases de datos completas, con\u00e9ctese mediante JDBC o importe un manifiesto dbt; para entornos regulados, SQLFlow On-Premise se ejecuta en Docker o Kubernetes dentro de su propia red.<\/p>\n\n\n\n<div class=\"wp-block-group alignfull gd-band gd-band-navy gd-cta is-layout-constrained\" style=\"padding-top:56px;padding-bottom:56px\"><div class=\"wp-block-group__inner-container\">\n\n<h2 class=\"wp-block-heading\">Rastrea tu primera columna hasta su origen.<\/h2>\n\n\n<p>Pegue la consulta de ejemplo de esta p\u00e1gina, o su consulta SQL de producci\u00f3n m\u00e1s compleja, y haga clic en cualquier columna de salida para ver su linaje completo, tanto directo como indirecto.<\/p>\n\n\n<div class=\"wp-block-buttons is-layout-flex\">\n<div class=\"wp-block-button\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/sqlflow.gudusoft.com\/?utm_source=gudusoft&amp;utm_medium=website&amp;utm_campaign=column-level-data-lineage\" target=\"_blank\" rel=\"noreferrer noopener\">Prueba SQLFlow gratis<\/a><\/div>\n\n\n<div class=\"wp-block-button is-style-outline\"><a class=\"wp-block-button__link wp-element-button\" href=\"https:\/\/www.gudusoft.com\/es\/contacto\/\">Solicite una demostraci\u00f3n para empresas.<\/a><\/div>\n<\/div>\n\n<\/div><\/div>\n\n\n\n<script type=\"application\/ld+json\">{\n    \"@context\": \"https:\\\/\\\/schema.org\",\n    \"@graph\": [\n        {\n            \"@type\": \"TechArticle\",\n            \"headline\": \"Column-Level Data Lineage: What It Is and Why Table-Level Isn't Enough\",\n            \"description\": \"Column-level data lineage maps every output column back to its exact source columns and transformations. A worked SQL example through a CTE, join, and aggregate, the direct vs indirect (fdd\\\/fddi) distinction, and why star expansion and view resolution require semantic parsing.\",\n            \"author\": {\n                \"@type\": \"Organization\",\n                \"name\": \"Gudu Software\",\n                \"url\": \"https:\\\/\\\/www.gudusoft.com\\\/\"\n            },\n            \"publisher\": {\n                \"@type\": \"Organization\",\n                \"name\": \"Gudu Software\",\n                \"url\": \"https:\\\/\\\/www.gudusoft.com\\\/\"\n            }\n        },\n        {\n            \"@type\": \"FAQPage\",\n            \"mainEntity\": [\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"What is the difference between table-level and column-level data lineage?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Table-level lineage records which tables and views feed which, one edge per object pair. Column-level lineage records, for every output column, the exact source columns that feed it and the transformations applied. Column granularity is what removes false positives from impact analysis and makes audit answers exact.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"What is indirect (impact) lineage?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Indirect lineage links a source column to an output it influences without contributing its value: columns in WHERE clauses, JOIN conditions, GROUP BY keys, and aggregate predicates. SQLFlow models it as a separate relationship type (fddi) that you can toggle independently of direct dataflow (fdd) in the diagram.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Can I extract column-level lineage with regex or grep?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Not reliably. Star expansion, view resolution, unqualified column names, and expressions like CASE or COALESCE all require a semantic model built from a real parse of the SQL plus schema metadata. Pattern matching can find table names; it cannot resolve which columns flow where.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Does column-level lineage work through views and SELECT *?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes, if the tool resolves them. SQLFlow expands SELECT * against schema metadata and recursively resolves column references through views, CTEs, and subqueries, so lineage runs from the final output column all the way to physical source columns.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"Does it work on stored procedures and dynamic SQL?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Yes. SQLFlow has dedicated procedural parsers for Oracle PL\\\/SQL and SQL Server T-SQL, traces lineage through procedure parameters and temp tables, resolves dynamic SQL assembled inside procedures, and renders a call graph of procedure-to-procedure invocations.\"\n                    }\n                },\n                {\n                    \"@type\": \"Question\",\n                    \"name\": \"How do I get column-level lineage for my own SQL?\",\n                    \"acceptedAnswer\": {\n                        \"@type\": \"Answer\",\n                        \"text\": \"Paste a query into SQLFlow Cloud's free tier and the column-level diagram renders in the browser. For whole databases, connect over JDBC or import a dbt manifest; for regulated environments, SQLFlow On-Premise runs in Docker or Kubernetes inside your own network.\"\n                    }\n                }\n            ]\n        }\n    ]\n}<\/script>","protected":false},"excerpt":{"rendered":"<p>El linaje de datos a nivel de columna mapea cada columna de salida de una consulta, vista o informe hasta las columnas de origen exactas que la producen, junto con cada transformaci\u00f3n aplicada en el proceso: funciones, conversiones, uniones, agregaciones y filtros. Mientras que el linaje a nivel de tabla dice &quot;la tabla orders alimenta la tabla revenue_report&quot;, el linaje a nivel de columna dice &quot;revenue_report.total es SUM(orders.amount), filtrado por orders.status y agrupado por customers.region&quot;. Es la granularidad en la que el an\u00e1lisis de impacto, la depuraci\u00f3n y las respuestas de auditor\u00eda se vuelven precisas en lugar de aproximadas. Linaje directo + indirecto fdd y fddi a nivel de columna, no solo a nivel de tabla. 39 dialectos SQL analizados. Staticreads SQL, nunca sus datos. Esta p\u00e1gina define el t\u00e9rmino, recorre una salida\u2026<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":[],"blocksy_meta":{"styles_descriptor":{"styles":{"desktop":"","tablet":"","mobile":""},"google_fonts":[],"version":5}},"_links":{"self":[{"href":"https:\/\/www.gudusoft.com\/es\/wp-json\/wp\/v2\/pages\/6746"}],"collection":[{"href":"https:\/\/www.gudusoft.com\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.gudusoft.com\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.gudusoft.com\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gudusoft.com\/es\/wp-json\/wp\/v2\/comments?post=6746"}],"version-history":[{"count":1,"href":"https:\/\/www.gudusoft.com\/es\/wp-json\/wp\/v2\/pages\/6746\/revisions"}],"predecessor-version":[{"id":6822,"href":"https:\/\/www.gudusoft.com\/es\/wp-json\/wp\/v2\/pages\/6746\/revisions\/6822"}],"wp:attachment":[{"href":"https:\/\/www.gudusoft.com\/es\/wp-json\/wp\/v2\/media?parent=6746"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}