Linaje de datos de Trino es el mapa a nivel de columna de cómo fluyen los datos a través de Trino (y Presto) SQL: qué columnas de origen en qué catálogos alimentan cada columna de salida y a través de qué uniones, funciones y filtros. Debido a que Trino es un motor de consulta federado, una sola instrucción puede leer desde colmena, PostgreSQL, y iceberg catálogos a la vez, por lo que el linaje preciso debe resolver cada columna a su totalmente calificado catálogo.esquema.tabla.columna identidad, no solo el nombre de una tabla. Flujo de SQL de Gudu Esto se logra mediante analizadores de dialecto específicos tanto para Trino como para Presto.
Compruébelo usted mismo en SQL: Pegue una consulta Trino federada en el Visualizador de linaje SQLFlow gratuitoSeleccione el dialecto Trino o Presto y obtenga un diagrama interactivo a nivel de columna.
Por qué la federación dificulta el linaje de datos de Trino
En un almacén convencional, el linaje reside dentro de una base de datos: cada tabla en una consulta pertenece al mismo sistema, y un nombre de dos partes como pedidos de ventas es inequívoco. Trino rompe esa suposición. Su único propósito es unir datos. al otro lado de sistemas: una tabla Hive en S3, una base de datos operativa PostgreSQL y una tabla Iceberg lakehouse pueden aparecer en el mismo SELECCIONAR.
Eso crea tres problemas que la mayoría de las herramientas de linaje manejan mal:
- Conflictos de nombres entre catálogos.
pedidos.de.ventas.de.colmenaypostgresql.ventas.pedidosSon tablas físicas diferentes en sistemas diferentes. El linaje que elimina el calificador de catálogo las fusiona en un solo nodo, y cualquier análisis de impacto posterior basado en él es erróneo. - Calificación parcial. Las consultas reales rara vez detallan nombres de tres partes en todas partes. Se basan en el catálogo y esquema predeterminados de la sesión, alias y
USARdeclaraciones. El resolvedor tiene que reconstruir la identidad completa de cada referencia de columna a partir de ese contexto. - Delimitación de fronteras entre sistemas en una sola declaración. Un
INSERTAR EN iceberg....que selecciona datos de Hive y PostgreSQL es un movimiento de datos entre tres sistemas expresado en una sola declaración. El linaje a nivel de tabla indica los sistemas afectados; solo el linaje a nivel de columna indica qué columna de PostgreSQL terminó en qué columna de Iceberg.
El resolvedor semántico de SQLFlow mantiene el historial completo. catálogo.esquema.tabla.columna Se establece una ruta en cada nodo del gráfico de linaje, de modo que las columnas de catálogos cruzados se mantienen distintas y rastreables de principio a fin.
Un ejemplo práctico: destino Iceberg, Hive y fuentes PostgreSQL.
Aquí se muestra una escritura federada típica: la creación de una tabla de valor de cliente en un catálogo Iceberg a partir de una base de datos PostgreSQL operativa unida al historial de pedidos de Hive:
INSERT INTO iceberg.analytics.customer_value SELECT c.customer_id, lower(c.email) AS email, sum(o.order_total) AS lifetime_value, count(*) AS order_count FROM postgresql.crm.customers AS c JOIN hive.sales.orders AS o ON c.customer_id = o.customer_id WHERE o.order_status = 'COMPLETED' GROUP BY c.customer_id, lower(c.email);
Ejecute esto a través de SQLFlow con el dialecto Trino seleccionado y el diagrama muestra, por columna de salida:
| Columna objetivo (iceberg.analytics.customer_value) | Columna de origen | Relación |
|---|---|---|
ID del cliente | postgresql.crm.clientes.id_cliente | Directo, de paso |
correo electrónico | Correo electrónico de clientes de postgresql.crm | Directo, a través de más bajo() |
valor_de_vida_de_vida | colmena.ventas.pedidos.total_de_pedidos | Directo, a través de suma() |
número_de_pedidos | pedidos.de.ventas.de.colmena filas | Directo, a través de contar(*) |
| todas las columnas | colmena.ventas.pedidos.estado_del_pedido | Indirecto (filtro WHERE) |
| todas las columnas | o.id_cliente / c.id_cliente | Indirecto (condición JOIN, GROUP BY) |
Fíjese en las dos últimas filas. estado_del_pedido nunca llega a la salida, pero cambiar cómo se llena cambia cada número en valor_del_cliente. SQLFlow modela esto como linaje indirecto (de impacto), un tipo de relación independiente y conmutable junto con el flujo de datos directo. La mayoría de las herramientas de linaje no hacen esta distinción, que es precisamente la información que necesita antes de modificar una columna de filtro en una tabla Hive compartida.
Trino y Presto son dialectos diferentes: SQLFlow analiza ambos.
Trino se bifurcó de Presto (como PrestoSQL) y fue renombrado en 2020; desde entonces, los dos dialectos han divergido. SQLFlow se distribuye Analizadores sintácticos separados específicos para cada dialecto, para Trino y para Presto.Entre sus 39 dialectos compatibles, no se trata de una gramática ANSI genérica con una bandera de compatibilidad. Si su infraestructura ejecuta PrestoDB junto con un clúster Trino más reciente, seleccione el dialecto correspondiente para cada fuente y ambas se analizarán correctamente.
Los analizadores provienen del General SQL Parser (GSP), un front-end de compilador SQL comercial desarrollado desde mediados de la década de 2000 y validado contra aproximadamente 13.600 conjuntos de prueba por dialecto. GSP construye un modelo semántico completo de cada instrucción, resolviendo referencias de columna a través de CTEs, subconsultas, vistas y SELECCIONAR * expansión — y su analizador de flujo de datos extrae las relaciones de origen a destino. La expansión en estrella es más importante en Trino que en casi cualquier otro lugar: SELECCIONAR * Una unión federada extrae columnas de varios sistemas, y para expandirla correctamente se requieren los metadatos del esquema de cada catálogo, que SQLFlow puede ingerir junto con la consulta SQL.
Cómo generar el linaje de Trino con SQLFlow
- Recopilar el SQL. Pegue consultas individuales, cargue archivos de scripts ETL y vea definiciones, o extraiga metadatos a través de JDBC. Para una cobertura completa del entorno, utilice Grabit/Ingestor de SQLFlow La utilidad extrae metadatos en lotes.
- Elige el dialecto. Trino o Presto, según la fuente. Si la misma canalización también contiene trabajos de Hive DDL o Spark SQL, analice cada uno en su propio dialecto; SQLFlow los admite todos, y las implementaciones empresariales almacenan los resultados en un repositorio de linaje persistente.
- Explora y exporta. Rastrea cualquier columna aguas arriba o aguas abajo en el diagrama interactivo, activa o desactiva el linaje indirecto y exporta como JSON, CSV o PNG, o consulta el gráfico a través de la API REST. Desde la versión 8.2.3 también puedes hacer preguntas en lenguaje sencillo ("de qué tablas de Iceberg dependen
Correo electrónico de clientes de postgresql.crm?”); cada tabla y columna en la respuesta de la IA se valida contra el gráfico analizado antes de su visualización.
A escala empresarial, SQLFlow realiza escaneos por lotes de conjuntos de más de 100 bases de datos y más de un millón de columnas, ejecuta escaneos incrementales, mantiene un repositorio de linaje persistente y exporta a DataHub, Microsoft Purview y OpenMetadata, de modo que el linaje de Trino se incorpora al catálogo que su equipo ya utiliza.
Análisis SQL estático frente a linaje de eventos en tiempo de ejecución
Otra forma común de obtener el linaje de Trino es mediante la captura en tiempo de ejecución: se interceptan los eventos de consulta del motor y se emite el linaje para cada instrucción ejecutada (el ecosistema OpenLineage funciona de esta manera). La captura en tiempo de ejecución es realmente eficaz para registrar lo que se ejecutó, con el contexto real de la sesión. Su limitación radica en la cobertura y la profundidad: solo registra las consultas que se ejecutaron durante el período de captura y requiere la instrumentación de cada clúster.
El análisis estático, el enfoque de SQLFlow, analiza el propio código SQL. Esto cubre los trabajos programados que aún no se han ejecutado, las definiciones de vistas y el código del repositorio en revisión, y no necesita ningún agente en el clúster y nunca lee los datos de las filas de la tabla. En entornos regulados, Edición local Docker/Kubernetes mantiene incluso el texto SQL dentro de la red. Muchos equipos utilizan ambos: eventos en tiempo de ejecución para la monitorización operativa y análisis estático para un análisis de impacto completo previo al despliegue.
Linaje en el resto de la pila
Trino rara vez cuenta toda la historia. Las tablas de Hive que consulta generalmente se cargaron mediante trabajos de Hive o Spark, y los resultados a menudo alimentan almacenes posteriores. SQLFlow analiza esas capas con el mismo motor; consulte las guías dedicadas a Linaje de datos de Hive y Linaje de datos de ClickHouseo el completo Descripción general de la herramienta de linaje de datos SQL Cubre los 39 dialectos. Con cada capa analizada en el repositorio de linaje persistente, puede rastrear una columna desde el trabajo de Spark que escribió la tabla de Hive, a través de la consulta federada de Trino, hasta el destino de Iceberg.
Preguntas frecuentes
¿SQLFlow es compatible con Trino y Presto?
Sí. Trino y Presto son dos de los 39 analizadores sintácticos específicos de dialecto de SQLFlow. Seleccione el dialecto que coincida con su motor; si ejecuta ambos, analice cada fuente con su propio dialecto.
¿Puede SQLFlow rastrear el linaje a través de los catálogos de Trino?
Sí. SQLFlow resuelve cada columna a su identidad completa de catálogo.esquema.tabla.columna, por lo que una consulta que combine los catálogos de Hive, PostgreSQL e Iceberg produce un linaje que mantiene las columnas de cada sistema distintas, incluso para las sentencias INSERT que mueven datos entre catálogos.
¿SQLFlow necesita acceso a mi clúster o datos de Trino?
No. SQLFlow realiza un análisis estático del código SQL, utilizando opcionalmente metadatos del esquema para resolver nombres y expandir SELECT *. Nunca lee filas de tablas y no necesita ningún agente en el clúster. La edición local mantiene el texto SQL completamente dentro de su red.
¿Qué información muestra SQLFlow para las columnas en las cláusulas WHERE y JOIN?
Aparecen como linaje indirecto (de impacto): un tipo de relación independiente para las columnas que influyen en el resultado sin aparecer en la salida. Puedes activar o desactivar el linaje indirecto en el diagrama, una distinción que la mayoría de las herramientas de linaje no tienen en cuenta.
¿Puedo exportar el linaje de Trino a mi catálogo de datos?
Sí. Las implementaciones empresariales incluyen adaptadores de exportación para DataHub, Microsoft Purview y OpenMetadata, además de exportación en formato JSON y CSV y una API REST para integraciones personalizadas.
¿Cuánto cuesta SQLFlow?
SQLFlow Cloud comienza gratis; la versión premium cuesta $49.99/mes. SQLFlow On-Premise cuesta $500/mes o $4,800 por única vez por tipo de base de datos seleccionado, instalable en dos servidores. Ver precios Para más detalles.
Rastrea tus consultas federadas ahora.
Pegue una consulta Trino que abarque varios catálogos en el visualizador gratuito y vea el linaje a nivel de columna en todos los catálogos que toca.