Benutzer mit den meisten Antworten
SSAS - LEFT OUTER JOIN in View

Frage
-
Hallo zusammen,
ich habe gerade erst begonnen mich mit dem Thema SSAS, Cubes und Dimensions etc. zu beschäftigen. Daher bitte ich im Vorfeld zu entschuldigen, falls ich mal nicht den richtigen Begriff treffen sollte. :-)
Wir nutzen einen SQL Server 2008.
Ich habe einen Cube erstellt, der Verkaufsdaten enthält. Verknüpft habe ich weitere Tabellen (Kundentabelle und Artikeltabelle).
Nun möchte ich neben der Produktnummer auch den Produktnamen ausgeben können. Es gibt aber leider einen Datensatz in der Verkaufsstatistiktabelle, der den Wert 0 im Fremdschlüssel des Produktes enthält und diesen dann damit nicht zuordnen kann.
Ich habe bereits im Internet gesucht und Lösungen mit UnknownMember und NullProcessing gefunden. Leider hilft dies nicht. Ich will nicht ausschließen, dass ich dort Fehler gemacht habe und daher hier mal meine Einstellungen:
In der Dimension habe ich in die Eigenschaften UnknownMember = Visible und UnkownMemberName = InvalidData gesetzt.
Dann bin ich hingegangen und habe in dem Attribut AutoID (Primärschlüssel des Verkaufsstatistik-Datensatzes) die Eigenschaft NullProcessing = UnknownMember gesetzt.
Dies ist die erste Frage, die ich habe. Eigentlich ist der Wert des Attributs AutoID ja korrekt gefüllt. Ist diese Stelle überhaupt richtig oder muss ich die NullProcessing Eigenschaft im Attribut des Fremdschlüssels einsetzen. Allerdings ist dort ja kein NULL enthalten, sondern eine 0. Greift diese Eigenschaft dann überhaupt?
Das wären fürs erste die Fragen, die ich zu dem Thema hätte. Wäre dankbar für jeden Tipp und Hinweis.
Falls noch mehr Informationen benötigt werden, stelle ich diese gerne zur Verfügung.
Viele Grüße
Dennis
- Bearbeitet Dennis Nxxxxx Dienstag, 31. Januar 2012 07:27
Antworten
-
Hallo Dennis,
die meisten Leute hier schauen in alle SQL Server bezogenen Foren, von daher ist es fast egal, wo Du es postet; wobei "Entwickler" für diesen Fall thematisch geeigneter wäre.
Wenn Du einen FK Wert hast, der nicht als Member in der Dimension vorhanden ist, wirst Du immer bei der Verarbeitung des Cubes immer den Fehler "Key not found" erhalten, da kannst auch nichts drum rum konfigurieren.
Über den "NullProcessing-Mode" kannst Du festlegen, ob da Feld NULL Werte enthalten darf oder nicht. Über die "UnknownMember" Konfiguration kannst Du festlegen, ob diese NULL Werte mit ausgegeben werden oder nicht; sowie die zu verwendene Bezeichnung.
Meines Erachtens hast Du 3 Möglichkeiten:
- Du entfernst in den Faktendaten den ungültigen FK Wert (Produkt = 0)
- Du legst ein Produkt mit Nummer 0 an, damit die FK Beziehung wieder für alle Daten erfüllt ist.Oder wenn die Quelldaten nicht geändert werden dürfen/können, könntest Du den ungültigen Wert herausfiltern, indem Du es in einen NULL Wert umwandelst, in der Art:
SELECT CASE WHEN ProductNo = 0 THEN NULL ELSE ProductNo END AS ProductNo
Am besten legst Du eine View dazu an und verwendest die in der DSV für die Faktentabelle. Sollte noch ein weiterer ungültiger Werte auftreten, müsstest Du nur die View ändern und nicht den Cube (und diesen dann neu verarbeiten).Siehe auch MSDN: Defining the Unknown Member and Null Processing Properties
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing- Als Antwort markiert Dennis Nxxxxx Donnerstag, 2. Februar 2012 09:54
Alle Antworten
-
Hallo Dennis,
die meisten Leute hier schauen in alle SQL Server bezogenen Foren, von daher ist es fast egal, wo Du es postet; wobei "Entwickler" für diesen Fall thematisch geeigneter wäre.
Wenn Du einen FK Wert hast, der nicht als Member in der Dimension vorhanden ist, wirst Du immer bei der Verarbeitung des Cubes immer den Fehler "Key not found" erhalten, da kannst auch nichts drum rum konfigurieren.
Über den "NullProcessing-Mode" kannst Du festlegen, ob da Feld NULL Werte enthalten darf oder nicht. Über die "UnknownMember" Konfiguration kannst Du festlegen, ob diese NULL Werte mit ausgegeben werden oder nicht; sowie die zu verwendene Bezeichnung.
Meines Erachtens hast Du 3 Möglichkeiten:
- Du entfernst in den Faktendaten den ungültigen FK Wert (Produkt = 0)
- Du legst ein Produkt mit Nummer 0 an, damit die FK Beziehung wieder für alle Daten erfüllt ist.Oder wenn die Quelldaten nicht geändert werden dürfen/können, könntest Du den ungültigen Wert herausfiltern, indem Du es in einen NULL Wert umwandelst, in der Art:
SELECT CASE WHEN ProductNo = 0 THEN NULL ELSE ProductNo END AS ProductNo
Am besten legst Du eine View dazu an und verwendest die in der DSV für die Faktentabelle. Sollte noch ein weiterer ungültiger Werte auftreten, müsstest Du nur die View ändern und nicht den Cube (und diesen dann neu verarbeiten).Siehe auch MSDN: Defining the Unknown Member and Null Processing Properties
Olaf Helper
* cogito ergo sum * errare humanum est * quote erat demonstrandum *
Wenn ich denke, ist das ein Fehler und das beweise ich täglich
Blog Xing- Als Antwort markiert Dennis Nxxxxx Donnerstag, 2. Februar 2012 09:54