Cómo crear un catálogo de metadatos para tablas Delta en Lakehouse
Este tutorial muestra cómo crear un catálogo de metadatos sencillo para organizar tablas Delta en el Lakehouse. Tener un catálogo ayuda a documentar, descubrir tablas y garantizar que los equipos utilizan esquemas y permisos correctos.
Requisitos previos
- Cuenta en Microsoft Fabric con permisos para crear Lakehouse y ejecutar SQL y scripts.
- Un Lakehouse con al menos una tabla Delta existente.
- Conocimientos básicos de SQL y nociones de PowerShell (opcional para automatización).
Paso 1: Definir el modelo de metadatos
Antes de crear tablas, piense qué campos son útiles: nombre de la tabla, ubicación (path), esquema (columnas), responsable, etiquetas y última actualización. Un modelo sencillo evita divergencias y permite búsqueda.
-- Exemplo de esquema para a tabela de catálogo
CREATE TABLE IF NOT EXISTS metadata.catalog (
table_name STRING,
lakehouse_path STRING,
schema_json STRING,
owner STRING,
tags ARRAY,
last_updated TIMESTAMP
)
USING DELTA;
Paso 2: Crear la tabla del catálogo en el Lakehouse
Use el endpoint SQL del Lakehouse (o cuadernos SQL) para crear la tabla Delta que almacenará los metadatos. Esto centraliza la información y se beneficia de las características ACID de Delta.
-- Executar no notebook SQL ou no endpoint SQL
CREATE TABLE IF NOT EXISTS metadata.catalog (
table_name STRING,
lakehouse_path STRING,
schema_json STRING,
owner STRING,
tags ARRAY,
last_updated TIMESTAMP
)
USING DELTA;
Paso 3: Poblar el catálogo con una entrada manual
Agregue manualmente una entrada para una tabla Delta existente. Guarde el esquema en JSON para facilitar su uso por herramientas que consuman el catálogo.
INSERT INTO metadata.catalog VALUES (
'sales_raw',
'/lakehouse/finance/sales_raw',
'{"columns":[{"name":"sale_id","type":"INT"},{"name":"amount","type":"DOUBLE"}] }',
'joana.silva',
array('finance','raw'),
current_timestamp()
);
Paso 4: Automatizar la captura del esquema con SQL
Para evitar inserciones manuales, extraiga el esquema de la tabla Delta y guárdelo en JSON. Este ejemplo usa funciones SQL para construir el JSON del esquema (ejemplo genérico — adapte según el endpoint SQL disponible).
-- Exemplo: gerar esquema a partir de DESCRIBE TABLE e inserir no catálogo
-- 1) Obter descrição e transformar em JSON (pseudocódigo adaptável)
CREATE OR REPLACE TEMP VIEW v_schema AS
SELECT concat('{"name":"', col_name, '","type":"', data_type, '"}') as item
FROM (DESCRIBE TABLE sales_raw);
-- 2) Agregar em array/json e inserir
INSERT INTO metadata.catalog (table_name,lakehouse_path,schema_json,owner,tags,last_updated)
SELECT
'sales_raw',
'/lakehouse/finance/sales_raw',
concat('[', string_join(collect_list(item), ','), ']'),
'joana.silva',
array('finance','raw'),
current_timestamp()
FROM v_schema;
Paso 5: Actualizar entradas con MERGE (upsert)
Use MERGE para mantener el catálogo sincronizado cuando la tabla sea modificada o recreada. Así se evitan duplicados y se mantiene last_updated correcto.
MERGE INTO metadata.catalog AS target
USING (SELECT 'sales_raw' AS table_name, '/lakehouse/finance/sales_raw' AS lakehouse_path,
'[{"name":"sale_id","type":"INT"},{"name":"amount","type":"DOUBLE"}]' AS schema_json,
'joana.silva' AS owner, array('finance','raw') AS tags, current_timestamp() AS last_updated) AS src
ON target.table_name = src.table_name
WHEN MATCHED THEN UPDATE SET
lakehouse_path = src.lakehouse_path,
schema_json = src.schema_json,
owner = src.owner,
tags = src.tags,
last_updated = src.last_updated
WHEN NOT MATCHED THEN INSERT *;
Paso 6: Automatizar con PowerShell (opcional)
Para ejecutar actualizaciones regulares, escriba un script PowerShell que llame al endpoint SQL y actualice el catálogo — útil para pipelines ETL/ELT.
# PowerShell: exemplo mínimo para chamar um endpoint SQL (pseudocódigo)
$endpointUrl = 'https://sqlendpoint.fabric...' # adaptar
$query = "MERGE INTO metadata.catalog ..." # colocar MERGE preparado
Invoke-RestMethod -Method Post -Uri $endpointUrl -Body @{query=$query} -Headers @{Authorization='Bearer TOKEN'}
Verificar el resultado
Confirme que la tabla metadata.catalog contiene entradas y que schema_json corresponde al esquema real. Ejecute consultas simples y compare con DESCRIBE TABLE.
SELECT * FROM metadata.catalog WHERE table_name = 'sales_raw';
DESCRIBE TABLE sales_raw;
Conclusión
Con un catálogo de metadatos en el Lakehouse es más fácil descubrir tablas Delta, garantizar la coherencia de esquemas y automatizar la documentación. Próximos pasos: ampliar campos (líneas de responsabilidad, SLAs), integrar con Power BI para búsqueda o conectar alertas cuando el esquema cambie. Consejo: empiece con entradas manuales y automatice cuando el patrón esté definido — ¿qué metadatos considera más útiles en su organización?