CiAgICA8IS0tIExpbmtlZEluIC0tPgogICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgogICAgICAgIF9saW5rZWRpbl9wYXJ0bmVyX2lkID0gIjEyMzUwNzMiOwogICAgICAgIHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyA9IHdpbmRvdy5fbGlua2VkaW5fZGF0YV9wYXJ0bmVyX2lkcyB8fCBbXTsKICAgICAgICB3aW5kb3cuX2xpbmtlZGluX2RhdGFfcGFydG5lcl9pZHMucHVzaChfbGlua2VkaW5fcGFydG5lcl9pZCk7CiAgICA8L3NjcmlwdD48c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+CiAgICAgICAgKGZ1bmN0aW9uKCl7dmFyIHMgPSBkb2N1bWVudC5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IilbMF07CiAgICAgICAgICAgIHZhciBiID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2NyaXB0Iik7CiAgICAgICAgICAgIGIudHlwZSA9ICJ0ZXh0L2phdmFzY3JpcHQiO2IuYXN5bmMgPSB0cnVlOwogICAgICAgICAgICBiLnNyYyA9ICJodHRwczovL3NuYXAubGljZG4uY29tL2xpLmxtcy1hbmFseXRpY3MvaW5zaWdodC5taW4uanMiOwogICAgICAgICAgICBzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGIsIHMpO30pKCk7CiAgICA8L3NjcmlwdD4KICAgIDxub3NjcmlwdD4KICAgICAgICA8aW1nIGhlaWdodD0iMSIgd2lkdGg9IjEiIHN0eWxlPSJkaXNwbGF5Om5vbmU7IiBhbHQ9IiIgc3JjPSJodHRwczovL3B4LmFkcy5saW5rZWRpbi5jb20vY29sbGVjdC8/cGlkPTEyMzUwNzMmZm10PWdpZiIgLz4KICAgIDwvbm9zY3JpcHQ+CiAgICA8IS0tIEVuZCBMaW5rZWRJbiAtLT4KICAgIA==
Generic filters
Exact matches only
Search in title
Search in excerpt
Search in content

Geoberechnungen (mit Filterwerten und benannten Mengen)

Wer in 80 Tagen um die Welt reisen will, wie einst Phileas Fogg in dem gleichnamigen und 1873 veröffentlichten Roman von Jules Verne, muss sich, ebenso wie ein heutiger Geschäftslenker, das Wissen aneignen, unternehmerische Aktivitäten mit räumlichen Zuordnungen und Gegebenheiten in Verbindung bringen zu können. Unterschiedlichste Strategien sind auf Basis von Wissen über veränderte Einzugsgebiete, geografische Konkurrenzsituationen, entsprechend zu berücksichtigende Logistikaufwände, unterschiedliche Marketingmaßnahmen ableitbar. Oder aber um einfach festzustellen, mit welchen Kunden wo Geschäfte getätigt wurden.

Für einen zusätzlichen Erkenntnisgewinn lassen sich Unternehmensdaten auf Markt- und Geozuordnung einfach mit Daten z.B. des statistischen Bundesamtes oder des Bundesinstituts für Bau-, Stadt- und Raumforschung sinnhaft anreichern.

Frei geschnitten von komplexen Anwendungsfällen wollen wir die Darstellung vor allem auf die technische Realisierung legen, die den Grundstein für betriebswirtschaftliche Betrachtungen bildet. Es lassen sich prinzipiell zwei unterschiedliche Herangehensweisen ausmachen: Zum einen die Nutzung bestehender Möglichkeiten in DeltaMaster und zum anderen die Erweiterung um Geokoordinaten für Postleitzahlen bzw. Adressdaten, um Beziehungen zwischen Gebieten selbst und exakt zu berechnen. Nachfolgend ist die Unterteilung aufgezeigt.

  1. ohne Geokoordinaten (Betrachtungen mit Filterwerten und benannten Mengen)
    Filterwerte (Analysewerttyp Filterwert)
    Benannte Mengen (und benutzerdefinierte Analysewerte)
  2. mit Geokoordinaten (Anreicherung um Längen-/Breitengraden von PLZ/Adressdaten)
    Geoberechnung allgemein (Hintergrund)
    Geo-Bibliothek für DeltaMaster
    Beispiel: Zuordnung PLZ-Schwerpunkte
    Beispiel: Zuordnung Adressen

In dem vorliegenden Blogbeitrag werden wir uns den Geobetrachtungen ohne Geo-Koordinaten (erster Punkt) mit seinen Ausprägungen widmen. Wie können wir Kennzahlen auf Regionen/PLZ oder Kreise einschränken? Dafür lassen sich in DeltaMaster zwei einfache Lösungen anführen: über Filterkennzahlen (vordefinierter Analysewert) und über benannte Mengen in Kombination mit zu erstellenden Analysewerten. Der Einfachheit halber ist die Modellierung in unserem Chair-Modell mit PLZ2 (zweistellige Postleitzahlen) realisiert. Sie ist aber jederzeit auf ein PLZ5-Modell (fünfstellige Postleitzahlen) erweiterbar.

Die Kundendimension enthält neben Land, Region, Gebiet die PLZ2, an ihr hängen – noch eine Ebene tiefer – die einzelnen Kunden.

Filterwerte (Analysewerttyp Filterwert)

Im Analysewertbrowser von DeltaMaster kann leicht ein Filter für eine bestehende Kennzahl (hier: Umsatz) manuell angelegt werden. Die dem Filter zugehörigen PLZ2 können manuell selektiert werden.

In einer Pivottabelle kann der erstellte Filterwert mit der ungefilterten Kennzahl nebeneinander gestellt werden.

Dies ist natürlich ebenfalls grafisch möglich.

Mehrere Filterwerte sind jederzeit erstellbar; wollen wir jedoch eine Restklasse (Gesamtumsatz minus alle Filterwerte) erstellen, so müssen wir einen benutzerdefinierten Analysewert in DeltaMaster anlegen. Dafür ist ein wenig MDX notwendig, damit die Filterwerte jeweils auf der PLZ2-Ebene aufaddiert werden; ansonsten ist die Aggregation auf höheren Hierarchieebenen fehlerhaft.

#1 Filter Umsatz 91,92,93,94,95
#2 Filter Umsatz 96,97,98,99
#3 Umsatz
/* Restklasse von Filterdefinitionen als Analysewert*/
SUM(
      NonEmptyCrossjoin(
             Descendants([Kunden].CurrentMember, [Kunden].[Kunde]),
            {[Measures].[Umsatz]},
      1
      ),
      IIF( #1 <> NULL OR #2 <> NULL,
             NULL,
             #3 - ( #1 + #2 )
      )
)

Jetzt können wir die erstellten Filterwerte und den Analysewert für die Restklasse in einer Pivottabelle darstellen.

Wichtig:

Die Berechnung sollte in DeltaMaster vorrangig zu anderen berechneten Kennzahlen stattfinden und damit die “solve order” kleiner als die der anderen Kennzahlen (<100) sein.

Aufgrund der Definition über Filterklassen führt ein Austausch der Kunden-Dimension durch z.B. die Produkte-Dimension zu einer Fehlberechnung in der Restklasse; diese lässt sich nur mit einer aufwändigen Erweiterung bzw. Eingrenzung der Definition beheben.

Möchte man die PLZ2 z.B. von extern vorgeben oder Dutzende von PLZ5 gruppieren, ist das manuelle Auswählen und Anklicken äußerst mühsam; hier empfiehlt sich eine andere Vorgehensweise.

Benannte Mengen (und benutzerdefinierte Analysewerte)

Im Benannte-Mengen-Browser von DeltaMaster kann man vorgefertigte Gruppierungen eingeben und pflegen. Es wird die gleiche PLZ2-Aufteilung wie im Fall Filterwerte angenommen. Die automatisierte Erstellung dieser Mengen (mittels regulärer Ausdrücke) wird später kurz aufgezeigt.

/* Benannte Menge für PLZ2-Gebiet */
{
         [Kunden].[PLZ].&[91],
         [Kunden].[PLZ].&[92],
         [Kunden].[PLZ].&[93],
         [Kunden].[PLZ].&[94],
         [Kunden].[PLZ].&[95]
}

Um die benannte Menge für eine Kennzahl nutzbar zu machen ist ein benutzerdefinierter Analysewert notwendig; mittels MDX ist ein Aufsummieren auf PLZ2-Ebene realisiert, allerdings nur derjenigen PLZ2, die in der benannten Menge vorkommen. Dieses einfache Statement ist universell nutzbar und einfach an weitere benannte Mengen anpassbar.

Die Bezeichnung der benannten Mengen lässt sich mittels Doppelklick oder mittels ALT-Taste im unteren Detailfenster der Analysewerteigenschaften eruieren.

#1 Umsatz
/* Analysewerteinschränkung auf Werte innerhalb benannter Menge */
SUM(
       INTERSECT(
             DESCENDANTS(
                     [Kunden].CurrentMember,[Kunden].[Kunde],LEAVES
             ),
             GENERATE(
                   {[namedset]},
                   DESCENDANTS(
                          [Kunden].CurrentMember,[Kunden].[Kunde],LEAVES
                    )
             )
),
#1
)

Wichtig:

Die Berechnung sollte in DeltaMaster vorrangig zu anderen berechneten Kennzahlen stattfinden und damit die “solve order” kleiner als die der anderen Kennzahlen (<100) sein.

Dieser Analysewert lässt sich ebenfalls in einer Pivottabelle darstellen.

Die Einführung weiterer benannter Mengen sowie einer Restklasse ist einfach über MDX-Statements im Benannte-Mengen-Browser möglich.

/* Restklasse von verschiedenen benannten Mengen */

Except( [Kunden].[PLZ].AllMembers, { [namedset], [namedset 2] } )

In einer Pivottabelle lassen sich alle Kennzahlen darstellen.

Die erstellten Analysewerte sind universell gültig und lassen sich auch in Kombination mit anderen Dimensionen nutzen, im nachfolgenden Beispiel wurde die Kunden- durch die Produktdimension ersetzt.

Diese Beispiele lassen sich auf OLAP-Modelle mit PLZ5 (fünfstellige Postleitzahlen) erweitern. Nachfolgend einige Beispiele und Anregungen

Das Stadtgebiet Nürnberg dargestellt als benannte Menge.

/* PLZ des Stadtgebietes Nürnberg */
{
     [PLZ_Standort].[PLZ].&[90402], [PLZ_Standort].[PLZ].&[90403],
     [PLZ_Standort].[PLZ].&[90408], [PLZ_Standort].[PLZ].&[90409],
     [PLZ_Standort].[PLZ].&[90411], [PLZ_Standort].[PLZ].&[90419],
     [PLZ_Standort].[PLZ].&[90425], [PLZ_Standort].[PLZ].&[90427],
     [PLZ_Standort].[PLZ].&[90429], [PLZ_Standort].[PLZ].&[90431],
     [PLZ_Standort].[PLZ].&[90439], [PLZ_Standort].[PLZ].&[90441],
     [PLZ_Standort].[PLZ].&[90443], [PLZ_Standort].[PLZ].&[90449],
     [PLZ_Standort].[PLZ].&[90451], [PLZ_Standort].[PLZ].&[90453],
     [PLZ_Standort].[PLZ].&[90455], [PLZ_Standort].[PLZ].&[90459],
     [PLZ_Standort].[PLZ].&[90461], [PLZ_Standort].[PLZ].&[90469],
     [PLZ_Standort].[PLZ].&[90471], [PLZ_Standort].[PLZ].&[90473],
     [PLZ_Standort].[PLZ].&[90475], [PLZ_Standort].[PLZ].&[90478],
     [PLZ_Standort].[PLZ].&[90480], [PLZ_Standort].[PLZ].&[90482],
     [PLZ_Standort].[PLZ].&[90489], [PLZ_Standort].[PLZ].&[90491]
}

Automatisierte Erstellung benannter Mengen mittels Regulären Ausdrücken

Mittels sogenannter Regulärer Ausdrücke (Regular Expressions, vgl. Blogbeitrag „Nutzung von regulären Ausdrücken im SQL Server“) kann leicht aus den ausgewählten PLZ (bzw. einer kommaseparierten Liste) eine benannte Menge erstellt werden. Im Einzelnen könnte das Vorgehen wie folgt vonstatten gehen.

Die gewünschten PLZ2-Gebiete werden manuell innerhalb der Geo-Analyse selektiert (auch eine Mehrfachselektion mittels CTRL ist möglich). Mittels „Drill-in“ wird eine Sicht für alle markierten Gebiete erzeugt.

Im Sichtfenster in die Kundendimension klicken und mittels F2 die Auswahl selektieren und schließlich durch Kopieren (CTRL-C) in die Zwischenablage überführen.

Schließlich können wir einen Editor (hier: TextPad) verwenden, der es erlaubt, reguläre Ausdrücke abzubilden. Die benannte Menge wird schließlich nach Vorgaben automatisch “generiert”.

Wir ergänzen die Menge manuell um “, 96, 97″ und fügen durch reguläre Ausdrücke die Kundendimension automatisch hinzu.

/* Reguläre Ausdrücke */

 

Schritt        Suchen             Ersetzen

1              \([0-9]\{2\}\)     [Kunden].[PLZ].\&[&]\n

2              \n\( *\),\( *\)    ,\n


Jetzt muss nur noch das Ergebnis in zwei Klammern “{ }” eingeschlossen werden und in DeltaMaster kopiert werden. Und schon sind wir fertig.

/* Benannte Menge für PLZ2-Gebiet */
{
       [Kunden].[PLZ].&amp;[91],
       [Kunden].[PLZ].&amp;[92],
       [Kunden].[PLZ].&amp;[93],
       [Kunden].[PLZ].&amp;[94],
       [Kunden].[PLZ].&amp;[95],
       [Kunden].[PLZ].&amp;[96],
       [Kunden].[PLZ].&amp;[97]
}

Ähnlich könnte man “Nürnberg-Nord” oder “westlich der Pegnitz” etc. manuell auswählen und über die vorgestellte Methodik “benannte Mengen” für Analysewerte erstellen.

Fortsetzung:

Im zweiten Teil des Artikels werden wir uns mit der Geodäsie beschäftigen; mittels Anreicherung um Geokoordinaten (Längen-/Breitengrad) und durch eine in DeltaMaster in MDX erstellte Bibliothek sollen weitere und tiefere Einblicke gewonnen werden; nachfolgend eine Übersicht über die neuen Analysewerte.