In einem früheren Beitrag, “So nutzen Sie Window Functions in SQL Script”, haben wir die Window Function vorgestellt, mit der Sie Partitionen innerhalb des SELECT Befehls generieren können.
In diesem Artikel stellen wir Ihnen mit MAP Function eine weitere praktische Funktion vor, mit der Sie einfache Mapping-Regeln abbilden können. Diese Funktion sucht nach einem Ausdruck innerhalb einer Menge von Suchwerten und gibt das entsprechende Ergebnis zurück. Sie ist mit IF/ELSE oder CASE Anweisungen in ABAP vergleichbar.
Syntax
Die Syntax der MAP Function sieht wie folgt aus:
MAP (<Ausdruck>, <Suche>, <Ergebnis> [{, <Suche>, <Ergebnis>}...] [, Standard_Ergebnis])
Dabei können Sie beliebig viele Such- und Ergebnispaare definieren. Wenn der gesuchte Wert nicht gefunden wird und ein Standard-Ergebnis definiert wurde, gibt die Funktion das vordefinierte Ergebnis aus. Falls kein Standard-Ergebnis definiert wurde, gibt die Funktion “NULL” aus. Suchwerte und entsprechende Ergebnisse werden in Paaren ausgegeben.
Beispiele
Betrachten wir zur Verdeutlichung ein einfaches Beispiel. Mit dem folgenden Code suchen wir im Ausdruck 3 nach den Werten 0, 1, 2 und 3. Falls der Wert 0 gefunden wird, wird Null ausgegeben. Wird der Wert 1 gefunden, wird Eins ausgegeben. Und so weiter.
SELECT MAP(3, 0, 'Null', 1, 'Eins', 2, 'Zwei', 3, 'Drei', 'Standard') "map" FROM DUMMY;
Da wir nur einen Wert, die 3, im Ausdruck definiert haben, wird die 3 auch gefunden und “Drei” wird ausgegeben.
Betrachten wir das nächste Beispiel. Nun suchen wir nach denselben Werten, allerdings im Ausdruck 815.
SELECT MAP(815, 0, 'Null', 1, 'Eins', 2, 'Zwei', 3, 'Drei', 'Standard') "map" FROM DUMMY;
Da keines der Suchbegriffe gefunden wurde, wird das vordefinierte Ergebnis, also “Standard”, ausgegeben.
Nun betrachten wir den Code, bei dem kein Standardwert definiert wurde.
SELECT MAP(815, 0, 'Null', 1, 'Eins', 2, 'Zwei', 3, 'Drei') "map" FROM DUMMY;
Da kein Standardwert vorgegeben wurde, wird der Initialwert “NULL” ausgegeben.
Steigern Sie die Leistung Ihres BW mit SQLScript!
Hier geht es zum Whitepaper!
Im SAP-Kontext können Sie mit der MAP Function Kategorien zu Produktstammdaten on the fly zuordnen:
SELECT "PRODUCT" AS Produkt,
MAP("PRODUCT",
'SM', 'Smartphone',
'SP', 'Smartphone',
'TM', 'Tablet',
'TP', 'Tablet') as Kategorie
FROM "/BI0/MPRODUCT"
Betrachten wir ein anderes Beispiel, wo mithilfe der MAP Function der Lieferstatus der Bestellung ausgegeben wird.
SELECT
"PO_NUMBER" AS Bestellnr,
"ACT_DL_DTE" AS Lieferdatum,
MAP("ACT_DL_DTE",
'00000000', 'offen',
current_date, 'heute geliefert',
'geliefert') AS Lieferstatus
FROM "/BIC/AZD023R0017"
GROUP BY
"PO_NUMBER","ACT_DL_DTE"
Beachten Sie dabei, dass das Lieferdatum # (nicht zugeordnet) SAP intern als 00000000 gespeichert wird. Das heißt, dass nicht gelieferte Bestellungen das Datum 00000000 tragen. Diesen wird der Status “offen” zugeordnet. Alle Bestellungen, die am heutigen Datum geliefert wurden, werden mit dem Lieferstatus “heute geliefert” ausgegeben. Dabei wird das aktuelle Datum über die SQL Function current_date bestimmt. Die Bestellungen mit allen anderen Lieferdaten werden als “geliefert” gekennzeichnet.
MAP Function - Unser Fazit
Mit der SQL MAP Function haben Sie ein nützliches Werkzeug in petto, mit dem Sie einfache Mapping-Regeln abbilden können.
Haben Sie Fragen zu SAP HANA SQLScript? Versuchen Sie das nötige Know-How in Ihrer Abteilung aufzubauen oder benötigen Sie Unterstützung bei einer konkreten Fragestellung? Wir helfen Ihnen gerne dabei. Fordern Sie noch heute ein unverbindliches Beratungsangebot an!