{"id":155,"date":"2010-04-02T16:57:40","date_gmt":"2010-04-02T15:57:40","guid":{"rendered":"http:\/\/csopro.de\/biblog\/2010\/04\/dimensionen-im-snowflake-schema-bei-null-values-konfigurieren\/"},"modified":"2010-04-02T16:57:40","modified_gmt":"2010-04-02T15:57:40","slug":"snowflake-schema-dimensionen-mit-null-values-konfigurieren","status":"publish","type":"post","link":"https:\/\/www.csopro.de\/biblog\/2010\/04\/snowflake-schema-dimensionen-mit-null-values-konfigurieren\/","title":{"rendered":"Snowflake-Schema-Dimensionen mit NULL-Values konfigurieren"},"content":{"rendered":"<p>Eine M\u00f6glichkeit, eine Dimension relational abzubilden, ist ein Snowflake-Schema. In diesem Schema werden Hierarchien so abgebildet, dass jede Hierarchiestufe eine eigene Tabelle besitzt, die durch Foreign Keys verbunden sind.<\/p>\n<p>Probleme k\u00f6nnen auftreten, wenn nicht bei allen Dimensionselementen alle Ebenen vorhanden sind und deshalb manche Elemente in der Datenbank NULL sind. Diese k\u00f6nnen \u00fcber das Setzen der Eigenschaft &#8222;NULL Processing&#8220; gel\u00f6st werden. Fangen wir aber vorne an.<\/p>\n<p>Ein Beispiel f\u00fcr eine Dimension im Snowflake-Schema seien die Hierarchien Produkt &gt; Warengruppe &gt; Strategisches Gesch\u00e4ftsfeld (SGF) und Produkt &gt; Produktionskennzeichen (hier ein Screenshot des Data Source View):<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" alt=\"Data Source View Produkt Dimension\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2010\/04\/dsv.jpg\" width=\"416\" height=\"243\" \/><\/p>\n<p>Daraus l\u00e4sst sich einfach eine Dimension bauen:<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2010\/04\/dimprodukt.jpg\"><img loading=\"lazy\" decoding=\"async\" alt=\"Dimension Produkt mit Hierarchien\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2010\/04\/dimprodukt-small.jpg\" width=\"450\" height=\"178\" \/><\/a><br \/>\n(Zum Vergr\u00f6\u00dfern Bild anklicken)<\/p>\n<p>Die einzelnen Attribute sind so definiert: Die Key-Column ist jeweils die ID-Spalte (also zum Beispiel id aus der Tabelle dim_SGF), die Name-Column jeweils die zugeh\u00f6rige Bezeichnung (z.B. die Tabelle SGFBezeichnung der Tabelle dim_SGF).<\/p>\n<p>In meinem Beispiel kann die Produktionskennzeichen_ID der dim_Produkt NULL sein.<\/p>\n<p>Das h\u00e4tte jetzt zur Folge, dass &#8211; Stand jetzt &#8211; die Dimension nicht aufbereitet werden kann:<\/p>\n<p><a href=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2010\/04\/fehlerbeimverarbeiten.jpg\" target=\"_blank\"><img loading=\"lazy\" decoding=\"async\" alt=\"Fehler beim aufbereiten der Dimension\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2010\/04\/fehlerbeimverarbeiten-small.jpg\" width=\"450\" height=\"290\" \/><\/a><br \/>\n(Zum Vergr\u00f6\u00dfern Bild anklicken)<\/p>\n<p>Die Fehlermeldung im Detail:<\/p>\n<blockquote>\n<p>Fehler im OLAP-Speichermodul: Der Attributschl\u00fcssel wurde bei der Verarbeitung nicht gefunden: Tabelle: dbo_dim_Produktionskennzeichen, Spalte: id, Wert: 0. Das Attribut ist &#8218;Produktionskennzeichen&#8216;. Fehler im OLAP-Speichermodul: Fehler beim Verarbeiten des Produkt-Attributs der Produkt-Dimension aus der SimpleCube-Datenbank.<\/p>\n<\/blockquote>\n<p>Offensichtlich hat der SSAS den NULL-Wert als 0 interpretiert, was er nat\u00fcrlich nicht finden kann.<\/p>\n<p>Die L\u00f6sung ist:<\/p>\n<ul dir=\"ltr\">\n<li>\n<div>Definieren des Unknown-Members der Dimension als sichtbar mit der Bezeichnung &#8222;unbekannt&#8220; (oder wie auch immer)<\/div>\n<\/li>\n<li>\n<div>Definieren der Nullprocessing-Eigenschaft der Key Column von Produktionskennzeichen auf &#8222;ConvertToUnknown&#8220;:<br \/>\n<img loading=\"lazy\" decoding=\"async\" alt=\"Null Processing bei der Key Coulmn eines Attributs\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2010\/04\/nullprocessing.jpg\" width=\"373\" height=\"408\" \/><\/div>\n<\/li>\n<\/ul>\n<p>Dann funktioniert die Aufbereitung und die Dimensionen sehen in meinem Beispiel so aus (die Zahlen sind irgendwelche Artikelnummern \ud83d\ude42 ):<\/p>\n<p>Hierarchie SGF:<br \/>\n<img loading=\"lazy\" decoding=\"async\" alt=\"Hierarchie SGF\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2010\/04\/hiersgf.jpg\" width=\"205\" height=\"278\" \/><\/p>\n<p>Hierarchie Produktionskennzeichen:<br \/>\n<img loading=\"lazy\" decoding=\"async\" alt=\"Hierarchie Produktionskennzeichen\" src=\"https:\/\/www.csopro.de\/biblog\/wp-content\/uploads\/2010\/04\/hierprodkennz.jpg\" width=\"245\" height=\"221\" \/><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Eine M\u00f6glichkeit, eine Dimension relational abzubilden, ist ein Snowflake-Schema. In diesem Schema werden Hierarchien so abgebildet, dass jede Hierarchiestufe eine eigene Tabelle besitzt, die durch Foreign Keys verbunden sind. Probleme k\u00f6nnen auftreten, wenn nicht bei allen Dimensionselementen alle Ebenen vorhanden sind und deshalb manche Elemente in der Datenbank NULL sind. Diese k\u00f6nnen \u00fcber das Setzen &hellip; <a href=\"https:\/\/www.csopro.de\/biblog\/2010\/04\/snowflake-schema-dimensionen-mit-null-values-konfigurieren\/\" class=\"more-link\"><span class=\"screen-reader-text\">Snowflake-Schema-Dimensionen mit NULL-Values konfigurieren<\/span> weiterlesen <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[9],"tags":[],"class_list":["post-155","post","type-post","status-publish","format-standard","hentry","category-analysisservices"],"_links":{"self":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/155","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/comments?post=155"}],"version-history":[{"count":0,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/posts\/155\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/media?parent=155"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/categories?post=155"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.csopro.de\/biblog\/wp-json\/wp\/v2\/tags?post=155"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}