Saltar a contenido

Contratos de tabla

Un contrato de tabla es un JSON con el estado deseado de una tabla Delta: columnas, particiones, propiedades y permisos. load_contract() lo convierte en un TableContract inmutable que consumen los writers, los readers y el SafeMigrator.

Ejemplo completo

tables/bronze/fact_vuelos.json
{
  "catalog":  "{catalog.bronze}",
  "schema":   "aeronautica",
  "name":     "fact_vuelos",
  "type":     "EXTERNAL",
  "format":   "DELTA",
  "comment":  "Hechos de vuelos operacionales",
  "owner":    "data-engineers",
  "location": "{path.bronze}/aeronautica/fact_vuelos",
  "columns": [
    { "name": "vuelo_id",   "type": "STRING",    "nullable": false },
    { "name": "fecha",      "type": "DATE",      "nullable": false },
    { "name": "origen",     "type": "STRING" },
    { "name": "email_pax",  "type": "STRING",    "mask": "security.mask_email" },
    { "name": "cargado_en", "type": "TIMESTAMP", "default": "current_timestamp()" }
  ],
  "partitions": ["fecha"],
  "properties": {
    "delta.autoOptimize.optimizeWrite": "true",
    "merge_schema":     true,
    "change_data_feed": true
  },
  "permissions": [
    { "action": "SELECT", "principal": "analysts-group", "operation": "GRANT" }
  ]
}

Para cargarlo:

from DKOps.table_governance import load_contract

contract = load_contract("tables/bronze/fact_vuelos.json")
contract.effective_name   # nombre correcto para el runtime actual

Campos de la tabla

Campo Tipo Por defecto Descripción
catalog string Catálogo de destino. Admite placeholders.
schema string Schema o base de datos.
name string Nombre de la tabla.
type string MANAGED MANAGED o EXTERNAL.
format string DELTA Formato de almacenamiento.
comment string Descripción de la tabla.
owner string Propietario en Unity Catalog.
location string Ruta física, necesaria en tablas EXTERNAL.
columns array Lista de columnas, ver abajo.
partitions array [] Columnas de partición. Deben existir en columns.
clustering object Liquid clustering en Databricks, como alternativa al particionado: {"columns": [...]}.
properties object {} Propiedades Delta y opciones de DKOps. Ver Propiedades y máscaras.
permissions array [] Permisos de Unity Catalog.

Campos de columna

Campo Tipo Por defecto Descripción
name string Nombre de la columna.
type string Tipo de Spark.
nullable bool true Si admite nulos.
comment string Descripción de la columna.
default string Expresión SQL usada como valor por defecto.
mask string Función de máscara de Unity Catalog.

Tipos admitidos: STRING, INTEGER, LONG, DOUBLE, FLOAT, BOOLEAN, DATE, TIMESTAMP, BINARY, DECIMAL, ARRAY, MAP y STRUCT.

Permisos

Cada entrada de permissions se traduce en una sentencia GRANT o REVOKE:

Campo Valores
action SELECT, MODIFY, CREATE, READ_METADATA, ALL PRIVILEGES, USAGE o EXECUTE
principal Un grupo o una service principal. Obligatorio.
operation GRANT (por defecto) o REVOKE

Los permisos solo se aplican en Databricks. En local se omiten sin error.

Contenido de la sección

Página Tema
Propiedades y máscaras merge_schema, Change Data Feed, máscaras y valores por defecto
Escritura TableWriter y sus operaciones
Metadata y tablas externas apply_contract_metadata() y tablas EXTERNAL
Lectura TableReader
Migraciones SafeMigrator