Modelo

Diccionarios

Los diccionarios nos permiten reutilizar valores de transformaciones anteriores, no solo entre diferentes trabajos, sino también en la misma ejecución. Esto nos permite mantener la consistencia en el conjunto de datos resultante, una entrada dada siempre producirá el mismo valor de salida.

Los diccionarios son comunes a todos los taps dentro del mismo proyecto. Por lo tanto, podremos transformar datos consistentemente a través de múltiples bases de datos. Puedes gestionar las entradas del diccionario de tu proyecto a través de la página de Diccionario en la configuración de tu proyecto.

Al ejecutar o editar una regla, las opciones de uso del diccionario aparecerán en el panel de configuración derecho.

Cómo usar

Dependiendo del criterio que elijamos, obtendremos diferentes resultados dependiendo de la configuración del diccionario que establezcamos. Estos son los disponibles:

Modos de Diccionario

Existen varios modos que controlan cómo se reutilizan los valores del diccionario:

Resumen de Modos de Diccionario

La siguiente tabla resume todos los modos de diccionario disponibles, cuándo usarlos y enlaces a sus explicaciones detalladas:

ModoDescripciónCuándo usarEnlace
CampoLa misma entidad y campo se transformarán de la misma maneraCuando necesitas diferentes transformaciones para el mismo valor en diferentes camposModo Campo
EtiquetaLos campos etiquetados con la misma etiqueta se transformarán de la misma maneraCuando quieres anonimización consistente a través de tipos de datos relacionados (modo predeterminado)Modo Etiqueta
Nombre de CampoLos valores con el mismo nombre de campo en diferentes entidades se transformarán consistentementeCuando los campos con nombres idénticos deben tener transformaciones consistentes sin importar las etiquetasModo Nombre de Campo
GlobalTodos los valores almacenados en el diccionario se reutilizarán sin importar entidad, campo o etiquetaCuando quieres que todos los valores idénticos en tu proyecto se transformen consistentementeModo Global
FilaUsa alcance basado en filas para transformacionesCuando los valores dentro de la misma fila deben ser consistentes pero diferentes entre filasModo Fila
RelacionadoUsa alcance basado en relaciones para transformacionesCuando quieres consistencia a través de tablas relacionadas según relaciones definidasModo Relacionado
Alcance de UsuarioTe permite definir alcance personalizado para transformaciones de diccionarioCuando necesitas control preciso sobre qué campos específicos comparten consistencia de transformaciónModo Alcance de Usuario
DesactivadoEl diccionario está desactivado - las transformaciones no se almacenarán ni reutilizaránCuando quieres máxima aleatoriedad y ninguna consistencia en transformacionesModo Desactivado

Modo Campo

Las coincidencias en la misma entidad y campo se transformarán de la misma manera. Incluso si hay coincidencias en otras entidades o campos, serán ignoradas.

En modo Campo, el alcance del diccionario está limitado a la combinación específica de entidad y campo. Esto significa que si el mismo valor aparece en diferentes campos o entidades, se transformará diferente cada vez.

Ejemplo: Si tienes una tabla "Clientes" con un campo "Nombre" y una tabla "Pedidos" con un campo "Nombre", el valor "Juan" en Clientes/Nombre se transformará diferente que "Juan" en Pedidos/Nombre.

Representación visual:

Tabla Clientes             Tabla Pedidos
┌──────────────┐             ┌──────────────┐
│ Nombre       │             │ Nombre       │
├──────────────┤             ├──────────────┤
│ Juan         │ ──────────▶ │ Marcos       │  (Transformación diferente)
└──────────────┘             └──────────────┘

┌──────────────┐             ┌──────────────┐
│ Nombre       │             │ Nombre       │
├──────────────┤             ├──────────────┤
│ Juan         │ ──────────▶ │ Sara         │  (Transformación diferente)
└──────────────┘             └──────────────┘

En modo Campo, cada combinación entidad-campo mantiene su propio alcance de diccionario, por lo que el mismo valor de entrada puede producir diferentes salidas dependiendo de dónde aparezca.

Para usar este modo, selecciona "Campo" del menú desplegable de modo de diccionario en la interfaz.

Modo Etiqueta (Predeterminado)

Las coincidencias en campos etiquetados con la misma etiqueta se transformarán de la misma manera. Este es el modo más común ya que asegura anonimización consistente a través de tipos de datos relacionados.

En modo Etiqueta, el alcance del diccionario se basa en etiquetas de campo. Esto significa que si dos campos tienen la misma etiqueta (ej. "persona/nombre"), consistentemente transformarán valores idénticos a la misma salida, sin importar a qué entidad pertenezcan.

Ejemplo: Si tienes una tabla "Clientes" con un campo "Nombre" etiquetado como "persona/nombre" y una tabla "Empleados" con un campo "Nombre Completo" también etiquetado como "persona/nombre", el valor "Juan Pérez" se transformará al mismo valor anonimizado en ambos campos.

Representación visual:

Tabla Clientes             Tabla Empleados
┌─────────────────┐           ┌──────────────────┐
│ Nombre          │           │ Nombre Completo  │
│ [persona/nombre]│           │ [persona/nombre] │
├─────────────────┤           ├──────────────────┤
│ Juan Pérez      │ ────────▶ │ Juan Pérez       │
└─────────────────┘           └──────────────────┘
       │                             │
       ▼                             ▼
┌─────────────────┐           ┌─────────────────────┐
│ Marcos García   │ ◀──────── │ Marcos García       │  (Misma transformación)
└─────────────────┘           └─────────────────────┘
                              │ (Diccionario        │
                              │  alcance compartido)│
                              └─────────────────────┘

En modo Etiqueta, los campos con la misma etiqueta comparten un alcance de diccionario asegurando transformación consistente a través de diferentes entidades.

Para usar este modo, selecciona "Etiqueta" del menú desplegable de modo de diccionario en la interfaz.

Modo Nombre de Campo

Los valores con el mismo nombre de campo a través de diferentes entidades se transformarán consistentemente.

En modo Nombre de Campo, el alcance del diccionario se basa en el nombre del campo mismo, sin importar a qué entidad pertenezca. Esto significa que campos con nombres idénticos (ej. "email") a través de diferentes tablas transformarán los mismos valores consistentemente.

Ejemplo: Si tienes un campo "email" en una tabla "Usuarios" y un campo "email" en una tabla "Suscriptores", el valor "juan@ejemplo.com" se transformará al mismo valor anonimizado en ambos campos, incluso si no comparten las mismas etiquetas.

Representación visual:

Tabla Usuarios          Tabla Suscriptores
┌─────────────────────┐    ┌─────────────────────┐
│ email               │    │ email               │
├─────────────────────┤    ├─────────────────────┤
│ juan@ejemplo.com    │ ─▶ │ juan@ejemplo.com    │
└─────────────────────┘    └─────────────────────┘
        │                        │
        ▼                        ▼
┌─────────────────────┐    ┌─────────────────────┐
│ usuario123@email.com│ ◀─ │ usuario123@email.com│ (Misma transformación)
└─────────────────────┘    └─────────────────────┘
        (Alcance de diccionario compartido basado en nombre de campo)

En modo Nombre de Campo, cualquier campo con el mismo nombre comparte un alcance de diccionario sin importar su entidad, asegurando transformación consistente de nombres de campo idénticos a través de diferentes tablas.

Para usar este modo, selecciona "Nombre de Campo" del menú desplegable de modo de diccionario en la interfaz.

Modo Global

Todos los valores que ya han sido almacenados en el diccionario se reutilizarán sin importar la entidad y campo en los que hayan sido encontrados o la etiqueta asignada a este.

En modo Global, hay un único alcance de diccionario compartido para todas las transformaciones en tu proyecto. Esto significa que una vez que un valor se transforma en cualquier lugar de tu proyecto, todas las ocurrencias subsiguientes de ese mismo valor se transformarán idénticamente, sin importar entidad, campo o etiqueta.

Ejemplo: Si "Juan Pérez" se transforma primero a "Marcos García" en un campo "Nombre" de tabla "Clientes", entonces todas las ocurrencias futuras de "Juan Pérez" en cualquier lugar de tu proyecto (ya sea en campo "Nombre Completo" de tabla "Empleados" o campo "Nombre del Cliente" de tabla "Pedidos") también se transformarán a "Marcos García".

Representación visual:

Alcance de Diccionario del Proyecto (Global)
┌──────────────────────────────────┐
│   Juan Pérez ──▶ Marcos García   │
└──────────────────────────────────┘



Tabla Clientes       Tabla Empleados       Tabla Pedidos
┌───────────────┐       ┌─────────────────┐       ┌────────────────┐
│ Nombre        │       │ Nombre Completo │       │ Nombre Cliente │
├───────────────┤       ├─────────────────┤       ├────────────────┤
│ Juan Pérez    │ ──▶   │ Juan Pérez      │ ──▶   │ Juan Pérez     │
└───────────────┘       └─────────────────┘       └────────────────┘
       │                         │                         │
       ▼                         ▼                         ▼
┌───────────────┐       ┌───────────────┐         ┌────────────────┐
│ Marcos García │ ◀──   │ Marcos García │   ◀──   │ Marcos García  │
└───────────────┘       └───────────────┘         └────────────────┘

En modo Global, hay un único alcance de diccionario para todo el proyecto. Una vez que un valor se transforma, todos los valores idénticos a través de tu proyecto se transformarán a la misma salida, sin importar entidad, campo o etiqueta.

Para usar este modo, selecciona "Global" del menú desplegable de modo de diccionario en la interfaz.

Modo Fila

Usa alcance basado en filas para transformaciones.

En modo Fila, el alcance del diccionario se basa en filas completas de datos. Esto significa que las transformaciones dentro de la misma fila serán consistentes, pero el mismo valor en diferentes filas puede ser transformado diferente.

Ejemplo: Si tienes una fila con "Juan Pérez" en el campo "Nombre" y "Calle Principal 123" en el campo "Dirección", ambos valores serán transformados consistentemente dentro de esa fila. Sin embargo, "Juan Pérez" en una fila diferente podría ser transformado a un valor diferente.

Representación visual:

Tabla Cliente (Modo Fila)
┌────────────────────────────────────────────────────┐
│ ID Fila │ Nombre         │ Dirección               │
├─────────┼────────────────┼─────────────────────────┤
│ 1       │ Juan Pérez     │ Calle Principal 123     │ ◀─ Misma fila, transformación consistente
│ 2       │ Juan Pérez     │ Avenida del Roble 456   │ ◀─ Fila diferente, transformación diferente
└─────────┴────────────────┴─────────────────────────┘
                    │               │
                    ▼               ▼
┌───────────────────────────────────────────────────┐
│ ID Fila │ Nombre         │ Dirección              │
├─────────┼────────────────┼────────────────────────┤
│ 1       │ Marcos García  │ Camino Pino 789        │ ◀─ Valores dentro de la misma fila son consistentes
│ 2       │ Sara Williams  │ Avenida del Roble 456  │ ◀─ Misma entrada, salida diferente debido al alcance de fila
└─────────┴────────────────┴────────────────────────┘

En modo Fila, el alcance del diccionario está limitado a cada fila individual. Los valores dentro de la misma fila se transforman consistentemente, pero valores idénticos en diferentes filas pueden tener transformaciones diferentes.

Para usar este modo, selecciona "Fila" del menú desplegable de modo de diccionario en la interfaz.

Modo Relacionado

Usa alcance basado en relaciones para transformaciones.

En modo Relacionado, el alcance del diccionario se basa en relaciones entre entidades en tu modelo de datos. Esto asegura que los valores mantengan consistencia a través de tablas relacionadas según sus relaciones definidas.

Ejemplo: Si tienes una tabla "Clientes" y una tabla "Pedidos" con una relación entre ellas, los nombres de cliente serán transformados consistentemente a través de ambas tablas basados en su relación. Cuando "Juan Pérez" se transforma en la tabla Clientes, cualquier pedido relacionado referenciará el mismo nombre transformado.

Representación visual:

Tabla Clientes           Tabla Pedidos
┌───────────────────┐       ┌───────────────────────┐
│ ID │ Nombre       │       │ ID Pedido │ ID Cliente│
├────┼──────────────┤       ├───────────┼───────────┤
│ 1  │ Juan Pérez   │ ◀──── │ 101       │ 1         │
│ 2  │ Ana García   │ ◀──── │ 102       │ 2         │
└────┴──────────────┘       └───────────┴───────────┘
     │                                  │
     ▼                                  ▼
┌─────────────────────┐       ┌───────────────────────┐
│ ID │ Nombre         │       │ ID Pedido │ ID Cliente│
├────┼────────────────┤       ├───────────┼───────────┤
│ 1  │ Marcos García  │       │ 101       │ 1         │
│ 2  │ Sara Williams  │       │ 102       │ 2         │
└────┴────────────────┘       └───────────┴───────────┘


                        ┌──────────────────────┐
                        │ Nombre Cliente       │
                        ├──────────────────────┤
                        │ Marcos García        │ ◀─ Consistente con tabla Clientes
                        │ Sara Williams        │ ◀─ Consistente con tabla Clientes
                        └──────────────────────┘

En modo Relacionado, el alcance del diccionario sigue relaciones definidas entre entidades. Cuando un valor se transforma en una tabla, todas las ocurrencias relacionadas en tablas conectadas usarán la misma transformación.

Para usar este modo, selecciona "Relacionado" del menú desplegable de modo de diccionario en la interfaz.

Modo Alcance de Usuario

Te permite definir alcance personalizado para transformaciones de diccionario.

En modo Alcance de Usuario, puedes crear tus propios alcances de diccionario personalizados que pueden ser compartidos a través de campos específicos de tu elección. Esto te da control preciso sobre qué campos deben compartir consistencia de transformación.

Ejemplo: Podrías crear un alcance personalizado llamado "identificadores-cliente" y aplicarlo a campos como "Nombre Cliente", "Contacto Facturación" y "Contacto Envío". Esto asegura que nombres idénticos en estos campos sean transformados consistentemente, mientras otros campos usan alcances diferentes.

Representación visual:

Alcance Definido por Usuario: "identificadores-cliente"
┌───────────────────────────────────────────────────────────┐
│ Nombre Cliente      Contacto Facturación   Contacto Envío │
├───────────────────────────────────────────────────────────┤
│ Juan Pérez          Juan Pérez           Juan Pérez       │
└───────────────────────────────────────────────────────────┘
       │                      │                    │
       ▼                      ▼                    ▼
┌─────────────────────────────────────────────────────────┐
│ Marcos García       Marcos García        Marcos García  │ ◀─ Transformación consistente
└─────────────────────────────────────────────────────────┘

Otros Campos (Alcances Diferentes)
┌─────────────────┐    ┌──────────────────┐
│ Email           │    │ ID Usuario       │
├─────────────────┤    ├──────────────────┤
│ Juan Pérez      │    │ Juan Pérez       │
│ (diferente      │    │ (diferente       │
│  transformación)│    │  transformación) │
└─────────────────┘    └──────────────────┘

En modo Alcance de Usuario, defines alcances personalizados que pueden extenderse a través de cualquier campo que elijas, proporcionando control preciso sobre qué valores deben compartir transformaciones consistentes.

Para usar este modo, selecciona "Alcance de Usuario" del menú desplegable de modo de diccionario e introduce un nombre de alcance personalizado en el campo de texto de alcance.

Modo Desactivado

El diccionario está desactivado - las transformaciones no se almacenarán ni reutilizarán.

En modo Desactivado, cada transformación se genera independientemente sin verificar o almacenar resultados en el diccionario. Esto significa que valores idénticos pueden ser transformados diferente cada vez que aparecen, proporcionando máxima aleatoriedad pero ninguna consistencia.

Ejemplo: Si el nombre "Juan Pérez" aparece múltiples veces en tus datos, podría ser transformado a "Marcos García", "Sara Williams" y "Roberto Davis" en diferentes ocurrencias.

Representación visual:

Modo Desactivado - Sin Alcance de Diccionario
┌─────────────────┐    ┌─────────────────┐    ┌─────────────────┐
│ Nombre Cliente  │    │ Nombre Empleado │    │ Nombre Pedido   │
├─────────────────┤    ├─────────────────┤    ├─────────────────┤
│ Juan Pérez      │    │ Juan Pérez      │    │ Juan Pérez      │
└─────────────────┘    └─────────────────┘    └─────────────────┘
       │                      │                      │
       ▼                      ▼                      ▼
┌───────────────────┐    ┌───────────────────┐    ┌───────────────────┐
│ Salida Aleatoria 1│    │ Salida Aleatoria 2│    │ Salida Aleatoria 3│
├───────────────────┤    ├───────────────────┤    ├───────────────────┤
│ Marcos García     │    │ Sara Williams     │    │ Roberto Davis     │
└───────────────────┘    └───────────────────┘    └───────────────────┘

En modo Desactivado, cada transformación se genera independientemente sin ningún alcance de diccionario, significando que valores de entrada idénticos pueden producir valores de salida completamente diferentes cada vez que aparecen.

Para usar este modo, selecciona "Desactivado" del menú desplegable de modo de diccionario en la interfaz.

Reutilización en la misma entidad y campo

Datos reales

idNombreApellido
1EdithUpton
2KeithSmith
3EdithSmith

Datos anonimizados

idNombreApellido
1GlendaLeannon
2FelixReynolds
3ValerieBlock

Como podemos ver, aunque Edith fue previamente anonimizada con Glenda, la segunda vez que aparece se convierte en otro valor (Valerie). Lo mismo pasa con el apellido Smith.

Guardar nuevas transformaciones en el diccionario

Si esta opción está habilitada, las transformaciones se almacenan y pueden ser usadas en los próximos trabajos.

Si esta opción no está activa, las transformaciones realizadas durante el trabajo serán eliminadas, por lo que solo tendrán efecto durante el trabajo mismo.

Sobrescribir diccionario actual

Si esta opción está activa, el diccionario del proyecto actual será borrado antes de que se ejecute la regla, por lo que no se reutilizarán valores previamente almacenados.

Gigantic no almacena ningún dato fuente en su base de datos. Usamos una función criptográfica para hashear las entradas. Por lo tanto, es imposible revertir el proceso para obtener los datos originales de vuelta.

Configuración de Diccionario en Funciones de Transformación

Al configurar el comportamiento del diccionario en tus funciones de transformación, puedes usar varias opciones en la interfaz para controlar cómo se almacenan y reutilizan los valores:

Opciones de Modo

El menú desplegable de modo determina el alcance en el que los valores del diccionario se almacenan y reutilizan:

  • Campo: Alcance las transformaciones a la combinación específica de entidad y campo
  • Etiqueta: Alcance las transformaciones a campos con la misma etiqueta
  • Nombre de Campo: Alcance las transformaciones a campos con el mismo nombre a través de diferentes entidades
  • Global: Usa un único alcance global para todas las transformaciones
  • Fila: Alcance las transformaciones a filas de entidad
  • Relacionado: Usa alcance basado en relaciones
  • Alcance de Usuario: Permite alcance personalizado con un nombre de alcance definido por usuario
  • Desactivado: Desactiva la funcionalidad del diccionario

Reemplazar Etiqueta

El campo de texto Reemplazar Etiqueta te permite anular la detección automática de etiquetas para un campo. Esto es útil cuando quieres que un campo sea tratado como un tipo de dato diferente para propósitos del diccionario.

Por ejemplo, si tienes un campo que contiene nombres de empresa pero quieres que sean tratados como nombres de persona para consistencia con otros campos de nombre, puedes introducir "persona/nombre" en el campo Reemplazar Etiqueta.

Con Opciones

La casilla Con Opciones incluye las opciones de función en la clave del diccionario, asegurando que valores idénticos con diferentes parámetros de transformación se almacenen por separado. Cuando esta opción está habilitada, el diccionario creará entradas únicas para el mismo valor de entrada si está siendo transformado con diferentes parámetros de función.

Ejemplo: Si tienes un campo Nombre siendo transformado con una función persona, y usas la misma entrada "Juan Pérez" pero con diferentes opciones (ej. una con género: 'masculino' y otra con género: 'femenino'), habilitar "Con Opciones" almacenará estas como entradas de diccionario separadas, permitiendo diferentes transformaciones basadas en las opciones proporcionadas.

Para usar esta opción, marca la casilla "Con Opciones" en el panel de configuración del diccionario. Esto es particularmente útil cuando quieres mantener diferentes transformaciones para el mismo valor basadas en parámetros específicos del contexto.

Manejo de Nulos

La casilla Manejo de Nulos controla si los valores nulos deben ser almacenados y recuperados del diccionario. Cuando está habilitada, los valores nulos serán consistentemente transformados al mismo valor de salida cada vez que appearcen en tus datos. Esto puede ser útil para mantener consistencia en tus conjuntos de datos anonimizados.

Cuando está deshabilitada (predeterminado), los valores nulos no se almacenan en el diccionario y serán procesados independientemente cada vez que son encontrados, resultando potencialmente en diferentes transformaciones o comportamientos de manejo.

Ejemplo: Con Manejo de Nulos habilitado, todos los valores NULL en un campo "Apellido" podrían ser consistentemente transformados a "Anónimo", mientras que con esto deshabilitado, podrían ser dejados como NULL o manejados diferente basados en la función de transformación.

Para usar esta opción, marca la casilla "Manejo de Nulos" en el panel de configuración del diccionario.

Implementación Técnica

Las transformaciones de diccionario funcionan por:

  1. Hashear el valor original: Cuando un valor va a ser transformado, primero es hasheado usando una función de hash criptográfico (SHA-256). Esto asegura que el valor original nunca se almacena en texto plano en el diccionario, manteniendo seguridad y privacidad.

  2. Crear un identificador de alcance: Basado en el modo seleccionado (Campo, Etiqueta, Global, etc.), se genera un identificador de alcance único. Este identificador determina dónde en el diccionario la transformación debe ser almacenada y recuperada de.

  3. Verificar transformaciones existentes: El sistema verifica si una transformación ya existe para ese hash dentro del alcance especificado. Esta búsqueda se realiza en tiempo constante para eficiencia.

  4. Retornar transformaciones existentes: Si se encuentra un hash coincidente en el alcance especificado, el valor transformado previamente generado es retornado, asegurando consistencia.

  5. Generar nuevas transformaciones: Si no se encuentra un hash coincidente, se genera una nueva transformación por la función apropiada, y tanto el hash como el valor transformado son almacenados en el diccionario para reuso futuro.

Esta implementación asegura que:

  • Los valores son consistentemente transformados basados en tu alcance elegido
  • Los datos originales nunca se almacenan en texto plano
  • Las búsquedas en el diccionario son eficientes
  • Múltiples proyectos pueden mantener diccionarios separados
  • El mismo sistema funciona a través de diferentes bases de datos y fuentes de datos dentro de un proyecto