Frage

Wir beginnen, ein DataWarehouse mit Daten aus Ereignisprotokollen zu laden. Wir haben ein normales Sternschema, bei dem eine Zeile in der Faktentabelle ein Ereignis darstellt. Unsere Dimensionstabellen sind eine typische Kombination aus User_agent, IP, Referal, Seite usw. Eine Dimensionstabelle sieht Folgendes aus:

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

Wo wir die ID autogenerieren, um sich schließlich gegen die Faktentabelle anzuschließen. Meine Frage ist: Was ist der beste Weg, um doppelte Datensätze in unserem Massenlastprozess zu identifizieren? Wir laden alle Datensätze für eine Protokolldatei in TEMP-Tabellen hoch, bevor wir den tatsächlichen Einfügen in den persistenten Speicher ausführen. Die ID ist jedoch nur automatisch inkrementiert, sodass zwei identische Dim-Datensätze aus zwei Tagen unterschiedliche IDs haben würden. Wäre das Erstellen eines Hashs der Wertspalten angemessen und dann versucht, dies zu vergleichen? Es scheint, als wäre der Versuch, in jeder Wertspalte zu vergleichen, langsam. Gibt es Best Practices für eine Situation wie diese?

War es hilfreich?

Lösung

Auto-Increment-Ganzzahl für einen Ersatz-PK ist in Ordnung, aber (laut Kimball) sollte auch eine Dimensionstabelle auch einen natürlichen Schlüssel haben. Also ein Hash NaturalKey Spalte wäre in Ordnung, auch a Status Die Spalte für "Strom" oder "abgelaufen" kann nützlich sein, um SCD -Typ 2 zu ermöglichen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top