Domanda

Stiamo iniziando a caricare un datawarehouse con dati dai registri degli eventi. Abbiamo uno schema stellare normale in cui una riga nella tabella dei fatti rappresenta un evento. Le nostre tabelle di dimensione sono una combinazione tipica di user_agent, IP, refer, pagina, ecc. Una tabella di una dimensione sembra questo:

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

Dove autogeneremo l'ID per unirsi alla tabella dei fatti. La mia domanda è: qual è il modo migliore per identificare i record duplicati nel nostro processo di carico di massa? Cariciamo tutti i record per un file di registro nelle tabelle temporanee prima di effettuare l'inserto effettivo nell'archivio persistente, tuttavia, l'ID è semplicemente incremento automatico, quindi due identici record Dim di due giorni avrebbero ID diversi. La creazione di un hash delle colonne del valore sarebbe appropriato e quindi cercare di confrontarlo? Sembra che provare a confrontare su ogni colonna del valore sarebbe lento. Ci sono delle migliori pratiche per una situazione come questa?

È stato utile?

Soluzione

L'intero incremento automatico per un PK surrogato è OK, ma (secondo il signor Kimball) anche una tabella di dimensione dovrebbe avere una chiave naturale. Quindi un hash NaturalKey la colonna sarebbe in ordine, anche a Status La colonna per "corrente" o "scaduto" può essere utile per consentire SCD di tipo 2.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top