none
Multidimensionale Modellierung: Wie modelliere ich Umsatz in meinem Haendlergebiet? RRS feed

  • Frage

  • Hallo zusammen,

    ich stecke in einem Modellierungsproblem für SSAS-Multidimensional fest. Ich bin ziemlich davon überzeugt, dass es durch eine geschickte Many-to-many-Modellierung leicht zu lösen ist.
    Ich sehe aber im Moment den Wald leider nicht. Oder die Bäume? Auf jeden Fall ist mein Kopf aus Holz. ;-)


    Die Ausgangslage:

    "Fakt_Umsatz":

    Dealer      Product     PostCode Turnover   
    ----------- ----------- -------- -----------
    1           2201        C        20         
    2           2201        D        100        
    1           2201        A        50         
    2           2201        B        30         

    "Dim_Geography_A":

    DealerId    DealerName    DealerGroupId DealerGroupName   RegionStructureA RegionStructureAName
    ----------- ------------- ------------- ----------------- ---------------- ---------------------
    1           Dealer 1      1             DlrGroup 1        1                RegionA 1
    2           Dealer 2      1             DlrGroup 1        1                RegionA 2


    "Dim_Geography_B":

    DealerId    DealerName    DealerGroupId DealerGroupName   RegionStructureB RegionStructureBName
    ----------- ------------- ------------- ----------------- ---------------- ---------------------
    1           Dealer 1      1             DlrGroup 1        1                RegionB 1
    2           Dealer 2      1             DlrGroup 1        2                RegionB 2

    Die beiden Geo-Dimensionen "Struktur A" und "Struktur B" werden in dem bereits bestehenden Cube parallel genutzt. Sie sollen unverändert fortbestehen.

    Jetzt möchte ich eine Dimension modellieren, die mir anzeigt, ob der Umsatz in "meinem" Gebiet erfolgt ist oder nicht.
    Also "einfach" eine Ja/Nein-Entscheidung.

    "Mein" Gebiet bzw. das "Händlergebiet" ist dabei wie folgt definiert:

    - Händler 1 (Dealer 1) verkauft in PLZ-Bereich A (PostCode A).
    - Händler 2 (Dealer 2)  verkauft in PLZ-Bereich B (PostCode B).
    - In PLZ-Bereich C (PostCode C) verkauft keiner der Händler direkt. Es gehört aber zur Händlergruppe 1 (DlrGroup 1).
    - Der PLZ-Bereich D (PostCode D) ist nirgends der Geo-Dimension "Struktur A" zugewiesen, ebenso nicht direkt einem Händler.
      Umsätze, die dort gemacht werden, sollen aber auf der Ebene "RegionB" der Geo-Dimension "Struktur B" als "Ja" bzw. "in meinem Gebiet" angezeigt werden.

    Ich möchte jetzt für jeglichen Umsatz auf irgendeiner Ebene der Geo-Dimensionen angezeigt bekommen, ob der Umsatz "in meinem Gebiet" oder "außerhalb meines Gebietes" erfolgt ist.

    War das verständlich?

    Falls für eine Lösungsfindung noch (weitere) Fragen da sind, schießt los. Ich versuche, mich möglichst schnell zurück zu melden.

    Jegliche Hinweise nehme ich sehr gerne entgegen! Vielen Dank im Voraus!!

    Bis bald
    Lutz

    --
    Leider ein Crossposting. :-(
    Vielleicht ist mein Englisch so schlecht, dass ich mich nicht verständlich machen kann bzw. die Diskussion nicht verstehe?!

    originaler Versuch: Versuch in englisch


    • Bearbeitet Lutz01 Montag, 12. September 2016 08:38
    Montag, 12. September 2016 08:36

Alle Antworten

  • Hallo Lutz,

    Deine Definition von "Händlergebiet" bezieht sich auch auf den PLZ-Bereich (PostCode), der derzeit scheinbar nur in den Faktendaten vorhanden sind, aber nicht in den beiden Dimensionen "Dim_Geography_A/B" und die sollen ja unverändert bleiben.

    Da wäre der nächstliegende Gedanke eine weitere Dimension für Händlergebiet anzulegen.


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Montag, 12. September 2016 16:37
  • Hallo Olaf,

    danke für deine Antwort!

    Im Prinzip möchte ich "nur" eine Ja/Nein-Dimension haben. (Trifft das auch auf die von dir vorgeschlagene Dimension Händlergebiet zu?).

    Nach meinem Verständnis muss ich die Zugehörigkeit von PLZs zu Händlern per Bridge-Table definieren.

    Mir ist nur nicht klar, wie ich die dann nutzen / in mein Model einbauen muss, damit ich das bekomme, was ich möchte.

    Ziel ist: Auf jeder Ebene der Geo-Dimension(en) angezeigt zu bekommen, ob der Umsatz "innerhalb" oder "außerhalb" (Ja/Nein) des Händlergebiets erfolgt ist.

    Das Problem (für mich) dabei ist, dass sich Händlergebiet je nach Ebene 'ändert'. Was auf Händler-Ebene "außerhalb" ist, kann auf Händlergruppe-Ebene bereits "innerhalb" sein.

    Im Moment bin ich echt überfragt. :-( Aber das kann doch nicht so schwer sein, oder?
    *Brett vorm Kopf*

    Im Voraus schon mal vielen Dank für die Antworten, die da kommen mögen!

    Grüße
    Lutz

    --

    Vielleicht hilft auch ein Blick in den englischen Thread ?!?


    • Bearbeitet Lutz01 Mittwoch, 14. September 2016 08:42
    Dienstag, 13. September 2016 08:01
  • Hallo Lutz/Ludger,

    mit einer Bridge wie Du sie angedacht hast, sehe das Model ja so aus (oder liege ich falsch?):

    Mit einem einfach Star- oder Snowflake Schema hat das nichts mehr zu tun und ich wüsste momentan nicht, wie man das sinnvoll abbilden könnte.

    Meine Idee wäre ja, das Model "Dim_Geography_A/B" komplett zu überarbeiten (aus meiner Sicht redundant, aber ich kenne die Business Anforderung/Logik nicht) und zu einer Dim mit der neuen Anforderung "Mein Gebiet" zu kombinieren, aber Du schriebst ja extra, die sollen ja unverändert bleiben


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    Dienstag, 13. September 2016 18:16
  • Hallo Olaf,

    vielen Dank für deine Antwort.

    Dass das "Modell" einfach ist, habe ich nie behauptet. ;-)
    Ich bin für jeden Hinweis / jede Idee dankbar.

    Wie würdest du das Modell überarbeiten? Die von dir erwähnten Dimensionen sind zum Teil redundant. Korrekt.
    Ich hab den Cube "nur so übernommen". (ich vermute, du kennst das... ;-)

    Dem Kunden will ich wenig/keine Änderung zumuten. Wenn es anders nicht geht, müssen wir halt "das Modell" (falls es den Namen überhaupt verdient) 'aufräumen'.

    Du hast dein Bild schon richtig gemalt. So sieht es zumindest zur Zeit aus. Und meine BridgeTable befindet sich genau an der Stelle. Ich habe dein Bild noch um die Postcode-Dimension ergänzt.

    cube_modell_lutz01 BridgeTable

    Denke ich mit many-to-many in eine völlig falsche Richtung?

    Im englischen Thread wird vorgeschlagen, ein Measure zu definieren, dass die Aggregation über alle nicht-leeren bzw. existierenden Zellen vornimmt.

    Create Member CurrentCube.[Measures].[Dealer Home Sales]
    as
    SUM(
      Exists(
         [PostCode].[PostCode].[PostCode]
        ,EXISTING [Dealer].[Dealer].[Dealer]
        ,'Bridge Table Measure Group'
      )
      ,[Measures].[Sales]
    );

    Das funktioniert, ist aber an ein festes Measure gebunden.

    Wenn ich versuche, diesen Ansatz zu verallgemeinern, bekomme ich Probleme. U. a. 'infinite recursion' Fehler: #Error Eine unbegrenzte Rekursion wurde entdeckt. Die Abhängigkeitsschleife ist: 2 -> 2.

    Mein aktueller Cube hat um die 20 Measure. Für jedes möchte ich nicht ein "In-Gebiet" und ein "außer-Gebiet" hinzu definieren. :-(

    Wie könnte ein allgemeinerer Ansatz aussehen?

    Danke fürs Mitdenken / Mitdiskutieren!

    Grüße Lutz


    • Bearbeitet Lutz01 Freitag, 16. September 2016 09:49
    Mittwoch, 14. September 2016 15:55
  • Hallo Olaf, hallo (stille/r Mitleser*in),

    weiterhin bin ich für jeden Hinweis danbar.

    Dank Alexei habe ich jetzt verstanden, warum es in meinem aktuellen Cube-Modell wohl nicht funktionieren wird, dieses Problem mit "irgendeiner Art von many-to-many" zu lösen.

    Was ich bislang verstanden bzw. umgesetzt habe:
    Für jedes Measure ein entsprechendes "In-Gebiet"-Measure zu definieren.

    Am liebsten würde ich jedoch eine "allgemeine" Lösung haben. Also eine Art "Dimension" mit einem Attribut und den Ausprägungen "beides", "in-Gebiet", "außer-Gebiet".

    In deiner ersten Antwort schlugst du, Olaf, eine Dimension "Händlergebiet" vor. Würdest du nach dem Modell-Bildchen diesen Ansatz weiterhin für sinnvoll halten?

    Wie könnte ein ganz neues Modell aussehen, das diesen "allgemeinen Ansatz" berücksichtigt? Hast du eine Idee?
    Wo kann ich was nachlesen, um mich aufzuschlauen?

    Wie gesagt, ich nehme jede Idee gerne entgegen. Mitdenken muss ich dann ja selber. ;-)
    Vielen Dank schon mal im Voraus!

    Viele Grüße Lutz

    Freitag, 16. September 2016 09:44
  • Hallo,

    also meiner Meinung (ich habe es nur überflogen) solltest du hier mit MDX arbeiten, das kann auswerten und einen Wert zurückliefern.

    Die gezeigten Tabellenmodelle haben auf jeden Fall nichts mehr mit Snowflake oder gar Star Schema zu tun.

    Mir bleibt auch unverständlich 2 Dimensionen mit dem gleichem Inhalt zu haben...

    Dienstag, 20. September 2016 11:39