Alejandría

Busca en Alejandría

Técnicas

Semantic layer

Centraliza definiciones de métricas y relaciones del negocio para que aplicaciones, BI y agentes consulten con el mismo significado.

01

En pocas palabras

Centraliza definiciones de métricas y relaciones del negocio para que aplicaciones, BI y agentes consulten con el mismo significado.

Qué problema resuelve

Indicadores contradictorios por reglas duplicadas en dashboards y consultas.

Cuándo utilizarlo

Analítica compartida y text-to-SQL. Ejemplo: definir ingresos netos y su periodo de reconocimiento una sola vez.

02

De la idea a la práctica

Funcionamiento, ejemplos y decisiones para pasar al siguiente nivel.

En el Radar compartido: Trial (valoración de la edición aportada).

Cómo funciona

La capa traduce conceptos del negocio a consultas sobre los datos, aplicando definiciones consistentes. Soluciones como dbt Semantic Layer separan esa lógica de cada consumidor.

Ejemplo de uso

Definir ventas netas como ventas reconocidas menos devoluciones, con moneda y fecha de negocio explícitas. El tablero comercial y un asistente consultan esa definición en lugar de recrearla.

Ejemplo con dbt MetricFlow

semantic_models:
  - name: creditos
    model: ref('fct_creditos')
    defaults:
      agg_time_dimension: fecha_corte
    entities:
      - name: credito
        type: primary
        expr: credito_id
      - name: cliente
        type: foreign
        expr: cliente_id
    dimensions:
      - name: fecha_corte
        type: time
        type_params: { time_granularity: day }
      - name: pais
        type: categorical
      - name: producto
        type: categorical
    measures:
      - name: saldo_total
        agg: sum
        expr: saldo_capital
      - name: saldo_mora_30
        agg: sum
        expr: case when dias_mora > 30 then saldo_capital else 0 end

metrics:
  - name: indice_mora_30
    label: Índice de mora a más de 30 días
    description: Saldo de capital con más de 30 días de mora sobre el saldo total.
    type: ratio
    type_params:
      numerator: saldo_mora_30
      denominator: saldo_total
dbt sl query --metrics indice_mora_30 --group-by metric_time__month,credito__pais

La definición de «mora 30» existe una vez; los dashboards, las hojas de cálculo, la API y un asistente de IA la consultan por nombre.

Tipos de métrica

Tipo Ejemplo
Simple Número de desembolsos
Ratio Índice de mora, tasa de aprobación
Derivada Margen = ingresos por intereses − costo de fondeo − provisiones
Acumulada Desembolsos acumulados en el año
Conversión Solicitudes que terminan en desembolso en 7 días

Opciones

Solución Rasgos
dbt Semantic Layer (MetricFlow) Definida junto a las transformaciones de dbt
Cube Open source, API (SQL, REST, GraphQL), caché y control de acceso
LookML (Looker) Integrada en la herramienta de BI
Vistas de métricas en el almacén Databricks, Snowflake y otros ofrecen objetos semánticos nativos
Ligera en la herramienta de BI Models y metrics de Metabase

Semantic layer y agentes de IA

Pedir a un LLM que escriba SQL directamente sobre tablas produce consultas plausibles con joins o filtros incorrectos. Con una capa semántica, el agente elige métricas y dimensiones existentes y la capa genera el SQL correcto, aplicando además permisos por fila. Es la forma más fiable de ofrecer «pregúntale a los datos» en lenguaje natural (Databricks Assistant, asistentes de BI).

Gobierno de las métricas

  • Cada métrica tiene dueño de negocio, definición en lenguaje natural y cálculo.
  • Los cambios en una métrica se revisan como código (PR) y se comunican a los consumidores.
  • Las métricas certificadas se distinguen de las exploratorias.
  • Contrasta los resultados con los informes oficiales (contabilidad, regulador) antes de declarar la capa como fuente de verdad.

Criterios de implementación

Validar resultados con expertos y probar uniones que puedan duplicar filas. Gestionar versiones y adopción: la capa no corrige por sí sola datos defectuosos ni reportes heredados.

Continúa en las fuentes

Documentación oficial para verificar detalles y explorar más.