Skip to content
NextLytics
Megamenü_2023_Über-uns

Shaping Business Intelligence

Ob clevere Zusatzprodukte für SAP BI, Entwicklung aussagekräftiger Dashboards oder Implementierung KI-basierter Anwendungen - wir gestalten zusammen mit Ihnen die Zukunft von Business Intelligence. 

Megamenü_2023_Über-uns_1

Über uns

Als Partner mit tiefem Prozess-Know-how, Wissen der neuesten SAP-Technologien sowie hoher sozialer Kompetenz und langjähriger Projekterfahrung gestalten wir die Zukunft von Business Intelligence auch in Ihrem Unternehmen.

Megamenü_2023_Methodik

Unsere Methodik

Die Mischung aus klassischem Wasserfallmodell und agiler Methodik garantiert unseren Projekten eine hohe Effizienz und Zufriedenheit auf beiden Seiten. Erfahren Sie mehr über unsere Vorgehensweise.

Produkte
Megamenü_2023_NextTables

NextTables

Daten in SAP BW out of the Box bearbeiten: Mit NextTables wird das Editieren von Tabellen einfacher, schneller und intuitiver, egal ob Sie SAP BW on HANA, SAP S/4HANA oder SAP BW 4/HANA nutzen.

Megamenü_2023_Connector

NextLytics Connectoren

Die zunehmende Automatisierung von Prozessen erfordert die Konnektivität von IT-Systemen. Die NextLytics Connectoren ermöglichen eine Verbindung Ihres SAP Ökosystems mit diversen open-source Technologien.

IT-Services
Megamenü_2023_Data-Science

Data Science & Engineering

Bereit für die Zukunft? Als starker Partner stehen wir Ihnen bei der Konzeption, Umsetzung und Optimierung Ihrer KI-Anwendung zur Seite.

Megamenü_2023_Planning

SAP Planning

Wir gestalten neue Planungsanwendungen mithilfe von SAP BPC Embedded, IP oder  SAC Planning, die einen Mehrwert für Ihr Unternehmen schaffen.

Megamenü_2023_Dashboarding

Dashboarding

Mit unserer Expertise verhelfen wir Ihnen auf Basis von Tableau, Power BI, SAP Analytics Cloud oder SAP Lumira zu aussagekräftigen Dashboards. 

Megamenü_2023_Data-Warehouse-1

SAP Data Warehouse

Planen Sie eine Migration auf SAP HANA? Wir zeigen Ihnen, welche Herausforderungen zu beachten sind und welche Vorteile eine Migration bringt.

Business Analytics
Megamenü_2023_Procurement

Procurement Analytics

Transparente und valide Zahlen sind vor allem in Unternehmen mit dezentraler Struktur wichtig. SAP Procurement Analytics ermöglicht die Auswertung von SAP ERP-Daten in SAP BI.

Megamenü_2023_Reporting

SAP HR Reporting & Analytics

Mit unserem Standardmodell für Reporting von SAP HCM mit SAP BW beschleunigen Sie administrative Tätigkeiten und stellen Daten aus verschiedenen Systemen zentral und valide zur Verfügung.

Megamenü_2023_Dataquality

Data Quality Management

In Zeiten von Big Data und IoT kommt der Vorhaltung einer hohen Datenqualität eine enorm wichtige Bedeutung zu. Mit unserer Lösung für Datenqualitätsmanagement (DQM) behalten Sie stets den Überblick.

Karriere
Megamenü_2023_Karriere-2b

Arbeiten bei NextLytics

Wenn Du mit Freude zur Arbeit gehen möchtest und dabei Deine berufliche und persönliche Weiterentwicklung nicht zu kurz kommen soll, dann bist Du bei uns genau richtig! 

Megamenü_2023_Karriere-1

Berufserfahrene

Zeit für etwas Neues? Gehe Deinen nächsten beruflichen Schritt und gestalte Innovation und Wachstum in einem spannenden Umfeld zusammen mit uns!

Megamenü_2023_Karriere-5

Berufseinsteigende

Schluss mit grauer Theorie - Zeit, die farbenfrohe Praxis kennenzulernen! Gestalte bei uns Deinen Einstieg ins Berufsleben mit lehrreichen Projekten und Freude an der Arbeit.

Megamenü_2023_Karriere-4-1

Studierende

Du möchtest nicht bloß die Theorie studieren, sondern Dich gleichzeitig auch praktisch von ihr überzeugen? Teste mit uns Theorie und Praxis und erlebe wo sich Unterschiede zeigen.

Megamenü_2023_Karriere-3

Offene Stellen

Hier findest Du alle offenen Stellenangebote. Schau Dich um und bewirb Dich - wir freuen uns! Falls keine passende Stelle dabei ist, sende uns gerne Deine Initiativbewerbung zu.

Blog
NextLytics Newsletter Teaser
Hier für unseren monatlichen Newsletter anmelden!
Newsletter abonnieren
 

Tipps zum lesbaren SQLScript Code

Es wird berechtigterweise vorausgesetzt, dass geschriebener SQLScript Code korrekt funktioniert. Unter dieser Prämisse rücken die Lesbarkeit, Transparenz und Wartbarkeit als Qualitätskriterien in den Vordergrund, denn oft müssen existierende Programme nachträglich korrigiert bzw. erweitert werden. Die Gründe dafür können vielfältig sein: neue regulatorische Anforderungen, neue Wünsche der Benutzer oder schlicht Fehler in der Implementierung.

Damit alles reibungslos vonstattengeht, ist sauberer und gut lesbarer Code die Grundvoraussetzung. Guter SQL Code kann von einer dritten Person genauso einfach wie ein Buch gelesen werden. Dabei muss die Funktionsweise sowie der Grund für jeden Codeblock stets verständlich sein. Bei Bedarf muss auch ein Unbeteiligter schnell die jeweiligen Anpassungen vornehmen können.

Das gilt gleichermaßen für den ursprünglichen Entwickler. Denn auch bei eigenen Programmen kann es vorkommen, dass man sich nach einiger Zeit nicht mehr zurechtfindet. Mit einem verständlichen und gut strukturierten Code geht die Fehlersuche einfacher und schneller vonstatten. Was macht nun einen sauberen Code aus? In diesem Artikel geben wir Ihnen ein paar Anreize.

Formatierung

Einer der einfachsten Ansätze, den SQLScript Code lesbarer zu machen, ist eine geeignete Formatierung. Dabei sind vor allem Zeilenumbrüche, Leerzeilen, Einrückungen und Groß-/Kleinschreibung zu berücksichtigen.

Zeilenumbrüche

Technisch gesehen kann jede SQL-Abfrage in einer einzigen Zeile geschrieben werden. Viele Abfragen sind sehr lang und wären dadurch schwer lesbar. Daher sollten Sie größtenteils nur eine Zeile pro Feld und Bedingung verwenden. Zum Beispiel:

SELECT
  CustomerName,
  City
FROM
  Customers
WHERE
    Country='Germany';

Leerzeilen

Auch der richtige Einsatz von Leerzeilen kann die Lesbarkeit verbessern. Vermeiden Sie dabei Leerzeilen innerhalb einer Anweisung. Verwenden Sie stattdessen Leerzeilen, um die einzelnen Blöcke Ihres Programms, wie zum Beispiel Variablendeklaration,  zu trennen.

DO BEGIN

lt_customers_in = SELECT
CustomerID
FROM
Customers
WHERE
  Country = 'Germany';

lt_employees_in = SELECT
EmployeeID,
Amount
FROM
Orders
WHERE
  CustomerID in (SELECT * FROM :lt_customers_in);

SELECT
EmployeeID,
SUM(Amount) AS Amount
FROM
:lt_employees_in
GROUP BY
EmployeeID
ORDER BY
Amount DESC;

END;

001-readable-line-breaks_SQLScript Code

Einrückungen

Um Ihren Code noch lesbarer zu machen, rücken Sie nach einem SQL-Befehl die folgenden Felder und Bedingungen ein. Nutzen Sie die Einrückung auch für Unterabfragen.

Statt also komplett linksbündig zu arbeiten …

SELECT
CustomerName,
City
FROM
Customers;

… sollte Ihr Code so aussehen:

SELECT
  CustomerName,
  City
FROM
    Customers;

Groß-/Kleinschreibung

Damit jeder Leser leicht erkennen kann, welche Operationen durchgeführt werden, sollten Sie alle SQL-Anweisungen groß schreiben.

Dazu zählen nicht nur Schlüsselwörter wie SELECT, FROM, WHERE, GROUP BY, ORDER BY, sondern auch andere Anweisungen, die innerhalb der Klauseln verwendet werden, wie: JOIN, AS, IN sowie ON. Auch Funktionen wie SUM() oder COUNT() sollten groß geschrieben werden, um sie besser von Spaltennamen zu unterscheiden.

Sprechende Namen

Verwenden Sie für Variablen sprechende (selbsterklärende) Namen. Der Sinn der Variable sollte sich bereits aus dem Namen erschließen. So sollte zum Beispiel die Variable für Familiennamen lv_familienname heißen, und nicht var1. Der Name von verwendeten Funktionen sollte ebenfalls direkt Aufschluss geben können, wofür diese Funktion benötigt wird. Entsprechend ergibt sich oft ein Nomen als Bezeichnung von Variablen und ein Verb für die Namen von Funktionen.


Steigern Sie die Leistung Ihres BW mit SQLScript!
Hier geht es zum Whitepaper!

SAP SQLScript Whitepaper


Kommentare

Beim Lesen von Programmen helfen Entwicklerkommentare ungemein - vor allem in komplizierten Code-Blöcken. Allerdings gilt es auch bei Kommentaren nicht zu übertreiben. Zu viele Kommentare können den Lesefluss hindern. Nutzen Sie Kommentare nur dann, wenn es wirklich nötig ist. Wenn Sie sich an unsere Tipps halten, aussagekräftige Namen verwenden und modularen Code schreiben, sollten Sie Kommentare nur selten nutzen müssen.

So sind zum Beispiel folgende Kommentare völlig überflüssig:

/* Adressen für deutsche Kunden anzeigen */
SELECT
ContactName, --Name
Address, --Adresse
City, -- Stadt
PostalCode --PLZ
FROM
/* Tabelle mit Kundendaten */
Customers
WHERE
/* Selektionskriterien */
Country = 'Germany' --Nur Deutschland auswählen

Andererseits sind Kommentare nötig, wenn es aus dem Code selbst nicht ersichtlich ist, was Sie erreichen möchten. Als gute Faustregel gilt, dass Kommentare die Frage nach dem “Warum?” und nicht nach dem j“Was?” beantworten sollten. Abgesehen von Kommentaren im Code selbst, sind auch Kopfkommentare mit einer Erklärung der einzelnen Teilschritte des Gesamt-Codings und einigen Meta-Informationen hilfreich.

/*
Purpose: Lists salesmen that have registered more than 10 orders
Executed steps:
1.Format name
2.Enhance with respective team
Author: Sebastian Uhlig
Change History: Creation 14.12.2022
*/

Abfragen in mehrere Schritte zerlegen

Normalerweise wird ein SQL-Codeblock immer gleichzeitig ausgeführt. Indem Sie Ihr Coding in mehrere Schritte unterteilen, können Sie hinterher Fehlerursachen leichter finden.  Durch die Trennung können Sie im Debugger einzelne Schritte analysieren und prüfen, ob das erwartete Ergebnis mit dem tatsächlichen Ergebnis übereinstimmt.

Dabei bietet sich die folgende Reihenfolge an:

  1. Eingangsselektionen
  2. Aggregationen
  3. Berechnungen
  4. Joins
  5. Ausgangsselektion

Übrigens, häufig wird ORDER BY in allen Schritten verwendet, ist jedoch nur in der Ausgangsselektion relevant. Indem Sie auf überflüssige Anweisungen verzichten, wird Ihr Code weniger überladen.

In SQLScript können Sie Tabellenvariablen zur Unterteilung nutzen. Dadurch können Sie einen großen, parallelen Codeblock in mehrere sequentielle Teilschritte unterteilen. Dies verbessert die Lesbarkeit ungemein.

Zum Beispiel:

DO BEGIN

-- Select german customers
lt_customers_in = SELECT
CustomerID
FROM
Customers
WHERE
  Country = 'Germany';

-- Identify respective salesmen
lt_employees_in = SELECT
EmployeeID,
Amount
FROM
Orders
WHERE
  CustomerID in (SELECT * FROM :lt_customers_in);


-- Show total sales per salesman in Germany
SELECT
EmployeeID,
SUM(Amount) AS Amount
FROM
:lt_employees_in
GROUP BY
EmployeeID
ORDER BY
Amount DESC;

END;

 

002-multiple-steps_SQLScript Code

UDFs verwenden

Wie bereits erwähnt, hilft uns Modularisierung dabei, fehlerhafte Stellen im Code schneller zu finden. Neben der Trennung der Abfrage in mehrere Schritte, können Sie auch User Defined Functions (UDFs) verwenden.

Größere SELECT Anweisungen können in mehrere UDFs ausgelagert werden. Zum einen reduziert sich dadurch die Komplexität und die Lesbarkeit wird verbessert. Zum anderen können die Funktionen dadurch separat getestet werden. Ein weiterer Vorteil von UDFs ist die Wiederverwendbarkeit. So können Sie die Funktion einmal definieren und anschließend in mehreren Abfragen nutzen. Wenn Sie beispielsweise eine Verkettung von Namen und Vornamen durchführen möchten, könnten Sie folgendermaßen vorgehen:

 SELECT
  FirstName || ' ' ||  LastName AS Name
FROM
    Customer;

Sie könnten jedoch auch eine UDF hierfür anlegen und diese in mehreren Abfragen wiederverwenden:

CREATE FUNCTION udf_concatenate_name(
lv_firstname NVARCHAR(30),
lv_lastname NVARCHAR(30)
)
RETURNS lv_name NVARCHAR(61)
AS BEGIN
lv_name = lv_firstname || ' ' || lv_lastname;
END;

SELECT
  CustomerID,
  udf_concatenate_name(FirstName, LastName) AS Name
FROM
    Customer;

SQLScript Code - Unser Fazit

Nun haben Sie mehrere Ansätze kennengelernt, um Ihren SQLScript Code lesbarer zu machen und anschließende Wartung zu erleichtern. Denken Sie immer daran: guter SQL-Code ist nicht der, den Computer verstehen, sondern der, den Menschen verstehen.

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!

Erfahren Sie mehr über  SAP HANA SQLScript

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

avatar

Irvin Rodin

Irvin ist seit 2019 im HANA Native und Datasphere-Umfeld unterwegs. Dabei kann er vor allem auf Erfahrungen als Berater und in der Entwicklung auf der XSA Plattform mittels SQLScript zurückgreifen. In seiner Freizeit spielt er leidenschaftlich Basketball und ist auch großer NBA Fan.

Sie haben eine Frage zum Blog?
Fragen Sie Irvin Rodin

Gender Hinweis Aufgrund der besseren Lesbarkeit wird im Text das generische Maskulinum verwendet. Gemeint sind jedoch immer alle Menschen.

Blog - NextLytics AG 

Welcome to our blog. In this section we regularly report on news and background information on topics such as SAP Business Intelligence (BI), SAP Dashboarding with Lumira Designer or SAP Analytics Cloud, Machine Learning with SAP BW, Data Science and Planning with SAP Business Planning and Consolidation (BPC), SAP Integrated Planning (IP) and SAC Planning and much more.

Informieren Sie mich über Neuigkeiten

Verwandte Beiträge

Letzte Beiträge