Pregunta

Estamos comenzando a cargar una casa de datos con datos de los registros de eventos. Tenemos un esquema de estrella normal donde una fila en la tabla de hechos representa un evento. Nuestras tablas de dimensión son una combinación típica de user_agent, ip, referal, página, etc. La tabla de una dimensión se ve así:

create table referal_dim(
  id integer,
  domain varchar(255),
  subdomain varchar(255),
  page_name varchar(4096),
  query_string varchar(4096)
  path varchar(4096)
)

Donde autogeneramos la identificación para que eventualmente se una a la tabla de hechos. Mi pregunta es: ¿Cuál es la mejor manera de identificar registros duplicados en nuestro proceso de carga masiva? Cargamos todos los registros para un archivo de registro en tablas TEMP antes de hacer el inserto real en el almacén persistente, sin embargo, la ID solo se incrementa automáticamente, por lo que dos registros DIM idénticos de dos días tendrían diferentes ID. ¿Sería apropiado crear un hash de las columnas de valor y luego tratar de compararlo? Parece que tratar de comparar en cada columna de valor sería lento. ¿Hay alguna mejor práctica para una situación como esta?

¿Fue útil?

Solución

Integer de auto-incremento para un PK sustituto está bien, pero (según el Sr. Kimball) una tabla de dimensiones también debería tener una clave natural. Entonces un hash NaturalKey La columna estaría en orden, también una Status La columna para "actual" o "caducado" puede ser útil para permitir SCD Tipo 2.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top