SQLScript in SAP HANA: Mit SQLScript COALESCE NULL-Werte vermeiden

Sebastian Uhlig

Geschrieben von: Sebastian Uhlig - 17 Dezember, 2020

Wenn Sie Transformationsroutinen mit SQLScript umsetzen, müssen Sie darauf achten, dass in den Ergebnistabellen keine NULL-Werte stehen. Andernfalls kommt es zu einer Fehlermeldung. Wie Sie dieses Problem umgehen können, erfahren Sie in diesem Beitrag.

Sämtliche Feldwerte, die in die Ergebnistabelle OUTTAB geschrieben werden, müssen einen definierten Wert enthalten. Denn die Definition der aktiven Datentabelle des DSOs hat eine Not NULL Prüfung.

DSO Tabelle Einstellung

Daher müssen auch alle Felder der Ergebnistabelle in der SQLScript Routine entsprechend gefüllt werden.

Beachten Sie, dass vor allem SQL Abfragen mit OUTER JOINS Befehlen NULL Werte generieren können. Da es von den Daten der zusammengeführten Tabellen abhängt, ob beim JOIN die entsprechenden Spalten gefüllt werden. Deshalb sollten alle Spalten, die durch einen OUTER JOIN gefüllt werden, mit einer COALESCE Funktion abgesichert werden.


Steigern Sie die Leistung Ihres BW mit SQLScript

SAP SQLScript Whitepaper


Diese Funktion gibt den ersten nicht-NULL Ausdruck aus einer Liste zurück. Nachfolgend finden Sie einige Beispiele zur Verdeutlichung.

COALESCE (inTab.”CUSTOMER”, ' ') AS “CUSTOMER”
COALESCE (inTab.”CUSTOMER”, '00000000') AS “CALDAY”
COALESCE (inTab.”AMOUNT”, 0) AS “AMOUNT”

Dabei muss der definierte Wert dem für den jeweiligen Datentyp entsprechenden Initialwert entsprechen. Anbei finden Sie eine Übersicht über die für SAP BW relevanten Initialwerte:

Datentyp

Initialwert

CHAR

' '

NUMC Länge n

n Nullen

DATS

00000000

TIMS

000000

CLNT

000

LANG

' '

Numerische Typen, wie z.B. CURR, QUAN, FLTP, INT4

0

 

Die Absicherung des OUTER JOINS könnte wie folgt aussehen:

outtab = SELECT ...
COALESCE( pcompany.comp_code, ' ' ) AS comp_code,
it.record,
it.sql__procedure__source__record
FROM :intab as it
LEFT OUTER JOIN "/BI0/PCOMPANY" AS pcompany
ON it.company = pcompany.company

Alternativ können Sie auch eine Fehlerbehandlung mit einer NULL-Werte-Prüfung einbauen. Die fehlerhaften Datensätze werden dabei an die ERRORTAB übergeben und in den ErrorStack geschrieben.


ERRORTAB = SELECT 'Fehlerhafter Datensatz' AS error_text,
SQL__PROCEDURE__SOURCE__RECORD
FROM :outtab
WHERE company = ' ' --Feld in INTAB leer
OR comp_code IS NULL --Join erfolglos

Fazit

Unsere Kunden können dank SQLScript von erheblichen Leistungssteigerungen profitieren. Sie können sich nun auf Datenanalysen und das Erreichen von Ergebnissen konzentrieren, anstatt auf die Verarbeitung der Daten zu warten.

Haben Sie Fragen zu SQLScript oder benötigen Sie Unterstützung bei der Migration Ihrer Transformationen? Bitte zögern Sie nicht, uns zu kontaktieren und besuchen Sie unsere Seite zu SAP HANA SQLScript.

Erfahren Sie mehr über  SAP HANA SQLScript

 

Weitere Information hierzu finden Sie im Buch "SQLScript für SAP HANA" (SAP PRESS, ISBN 978-3-8362-7408-1) von Jörg Brandeis 

Themen: SAP HANA, SAP BW/4HANA, SAP HANA SQL

Beitrag teilen

Sie haben eine Frage zum Blog?
Fragen Sie den/die Autor*in Sebastian Uhlig