In einem vorheriger Blogeintraghaben wir besprochen, wie man Geisterdatensätze in einer Data Vault 2.0-Lösung implementiert. Diesmal möchten wir über "das andere" Konzept sprechen, nämlich Nullschlüssel, die oft mit Geisterdatensätzen gleichgesetzt werden.
Wie in der vorheriger Teil dieser SerieEin Ghost Record ist ein Dummy-Datensatz in Satelliten-Entitäten, der Standardwerte enthält. Einfach ausgedrückt, sind Nullschlüssel der Eintrag in jeder Hub- und Link-Entität, der ein Gegenstück zum Ghost Record des Satelliten ist und dessen Hash-Schlüssel enthält. Auf diese Weise wird der Begriff "Nullschlüssel" oft verwendet, um den Ghost Record zu beschreiben. Hash-Schlüsseldie auch bei anderen Data Vault-Entitäten auftreten könnten, wie etwa bei Point-in-Time (PIT)-Tabellen oder Links. Zusammen mit dem Null-Hash-Schlüssel wird, ähnlich wie bei einem Geisterdatensatz, ein Standardwert für den Geschäftsschlüssel angegeben. Oder, im Falle eines zusammengesetzten Geschäftsschlüssels, mehrere Standardwerte für jede seiner Komponenten.
Mit dem Hub- und Link-Eintrag für den Null-Schlüssel hat dann jeder Eintrag in seinem zugehörigen Satelliten einen übergeordneten Hash-Schlüssel, wodurch sogenannte Hash-Schlüssel-Waisen vermieden werden.
In Data Vault 2.0 muss nur ein einziger Geisterdatensatz zu jeder Satelliteneinheit eingefügt werden. Es ist jedoch möglich, dass mehrere Nullschlüssel vorhanden sind. Bei Scalefree intern und in vielen unserer Projekte unterscheiden wir zwei Arten von fehlenden Objekten durch unterschiedliche Hub-Nullschlüssel.
Bitte beachten Sie, dass der verwendete Hash-Algorithmus MD5 ist:
- 00000000000000000000000000000000 (32-mal die Ziffer '0') für allgemeine "unbekannte" Fälle, in denen ein Geschäftsschlüssel fehlt.
- ffffffffffffffffffffffffffffffffffffff (32 Mal der Buchstabe "f"): eine spezielle Nulltaste für "irrtümliche" Fälle von fehlenden Geschäftstasten, die angezeigt werden.
Ein gutes Beispiel für die Verwendung des "Fehler"-Nullschlüssels ist eine fehlerhafte oder defekte obligatorische Objektbeziehung in der Quelle. In diesem Fall wird der Nullschlüssel ffffffffffffffffffffffffffffffffffffff in der Link-Entität gefunden werden, was auf eine unerwartet fehlende Hub-Referenz hinweist. Sollten Sie sich für die Implementierung des Fehler-Null-Schlüssels entscheiden, ist es nicht erforderlich, einen Ghost-Datensatz mit dem Fehler-Null-Schlüssel als übergeordneten Hash-Schlüssel in Satellitenentitäten einzufügen.
Was den Null-Schlüssel in Link-Entitäten betrifft, so ist nur ein Eintrag erforderlich, der den Null-Hash-Schlüssel sowohl als Link-Hash-Schlüssel als auch als Hub-Referenz enthält.
Es ist auch wichtig, darauf hinzuweisen, dass alle Beispiele, die wir in dieser Blogserie anführen, den Hash-Algorithmus MD5 verwenden, der 32-hexadezimale Ziffernfolgen ausgibt. Bei Data Vault 2.0-Projekten, die andere Hash-Algorithmen wie SHA256 verwenden, passen Sie einfach die Länge der von uns vorgeschlagenen Nullschlüssel an ("0000..." / "ffff...") auf die gewünschte Hash-Ausgangslänge.
Schlussfolgerung
Wir hoffen, dass dieser Blogbeitrag dazu beigetragen hat, die Implementierung von Nullschlüsseln in einer Data Vault 2.0-Lösung und die Unterschiede zwischen den Konzepten von Geisterdatensätzen und Nullschlüsseln zu verdeutlichen. Teilen Sie uns Ihre Erfahrungen mit der Implementierung dieser Konzepte in den Kommentaren unten mit!
- von Trung Ta (Scalefree)
Updates und Support erhalten
Bitte senden Sie Anfragen und Funktionswünsche an [email protected].
Für Anfragen zu Data Vault-Schulungen und Schulungen vor Ort wenden Sie sich bitte an [email protected] oder registrieren Sie sich unter www.scalefree.com.
Um die Erstellung von Visual Data Vault-Zeichnungen in Microsoft Visio zu unterstützen, wurde eine Schablone implementiert, die zum Zeichnen von Data Vault-Modellen verwendet werden kann. Die Schablone ist erhältlich bei www.visualdatavault.com.
Bevor es Hashkeys gab, habe ich die Kimball-Fehlercodes als Ersatzschlüssel für genau diesen Zweck verwendet. Auf diese Weise konnten wir den Übergang von Datensätzen mit fehlenden Schlüsseln zu vollständigen Datensätzen überwachen (in der Regel ein Fall von zu spät eintreffenden Schlüsseln), und wir konnten auch Berichte über das Volumen aktiver Satellitendatensätze für das Knotenpunktobjekt "fehlender Schlüssel" erstellen. Diese sollte unter einem bestimmten Wert bleiben, da die Ladung sonst wahrscheinlich nicht alles geladen hatte, was sie hätte laden sollen.
Hallo Ronald,
Vielen Dank für die nette Idee!
Zum Wohl!
Trung
Vielen Dank für diesen Artikel. Sehr informativ!
Ich möchte Sie fragen, wie Sie im Falle eines zusammengesetzten Geschäftsschlüssels vorgehen würden?
Nehmen wir an, ein zusammengesetzter Geschäftsschlüssel mit 3 Spalten in einem Hub. Bk1 + Bk2 + Bk3
Wenn der Wert von allen 3 Business Keys als Null von der Quelle kommt, dann ofcourse, ich denke, kann die Ersetzung für alle 3 zu sein (unbekannt) oder (Fehler) gelten.
Wie wäre es, wenn nur ein Teil von bk null wird?
Bk1 =123
Bk2=abc
Bk3=NULL
Was ich mir vorstellen kann, ist, dass
Ersetzen Sie Bk3 durch (unbekannt) und setzen Sie es als Teil des normalen Hash-Prozesses ein.
Haben Sie dazu eine Meinung?
Hallo Nikunj,
im Falle eines zusammengesetzten Geschäftsschlüssels:
- Wenn die Quelle alle BK-Teile mit NULL-Werten liefert, dann ist es ganz klar, dass der BK einfach fehlt, was ein Fall für '(unknown)' und den 0000-Nullschlüssel ist. Sie können argumentieren, dass z. B. in einem Stammdatensatz der BK nicht fehlen darf, und Sie hätten Recht - in diesem Fall empfehlen wir, diesen Datensatz in einen Error mart zu schreiben, und Sie müssen diesen Datensatz separat behandeln. In jedem Fall wird dieser Datensatz nicht in den Ziel-Hub und -Satelliten eingefügt, da Ihr Lademuster Null-Schlüssel im eingehenden Datenfeed verweigern sollte.
- Wenn die Quelle einen oder mehrere Teile mit NULL-Werten liefert, dann ist der Geschäftsschlüssel fehlerhaft, d. h. selbst in der Quelle kann der erwartete Geschäftsschlüssel nicht vollständig gemäß Ihrer BK-Definition aufgebaut werden. In diesem Fall können Sie '(error)' als Standardwert und den Schlüssel ffff zero ausgeben, um anzuzeigen, dass der Business Key nicht ordnungsgemäß geliefert wurde.
Ich hoffe, das hilft Ihnen - lassen Sie es uns wissen, wenn wir Ihnen weiterhelfen können!
Trung Ta