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
 

Wie Sie die Performance Ihrer SQL Funktionen steigern

Während andere Werkzeuge die Performance der Ausführung prüfen, also das Ergebnis des geschriebenen Codes, dient SQLScript Code Analyzer dazu, den Code selbst zu prüfen. Dieses Werkzeug kann sowohl für bestehende Prozeduren bzw. Funktionen, als auch vor der Erstellung dieser verwendet werden. Dabei erfolgt eine Prüfung auf Qualität, Sicherheit und Performance. Die Ergebnisse der Überprüfung werden in Form einer Tabelle ausgegeben.

In diesem Artikel erklären wir zunächst die Grundlagen und zeige anschließend die Funktionsweise dieses Tools anhand von konkreten Beispielen. Die dabei bereitgestellten Code Snippets können Sie für die eigenen Implementierungen verwenden.

Unsere Blogreihe "SQLScript Performance Analyse" im Überblick

  1. Performance Analyse und Optimierung von SAP SQL

  2. SQL Performance Analyse mit SAP PlanViz 

  3. Wie Sie die Performance Ihrer SQL Funktionen steigern 

 

Zwei Prozeduren und eine Regel-Tabelle

Für die Analyse des Codes stellt SAP zwei Prozeduren zur Verfügung ANALYZE_SQLSCRIPT_OBJECTS und ANALYZE_SQLSCRIPT_DEFINITION. Nachfolgend stellen wir jede Prozedur im Detail vor. Die Regeln sind in der Tabelle sqlscript_analyzer_rules enthalten und können über die folgende Anweisung eingesehen werden:

 SELECT * FROM sqlscript_analyzer_rules; 

Diese Tabelle ist sowohl in on-premises HANA Systemen als auch in der HANA Cloud verfügbar. Die Regeln in der Tabelle werden im Laufe der Zeit mit den herausgebrachten Service Packages erweitert. Im Moment sind folgende Regeln verfügbar:

301-sql-script-analyzer-rules_SQL Funktionen

ANALYZE_SQLSCRIPT_OBJECTS

Mithilfe der Prozedur ANALYZE_SQLSCRIPT_OBJECTS können Sie den Quellcode von bereits vorhandenen Prozeduren bzw. Funktionen analysieren. Sie können auch mehrere Prozeduren auf einmal prüfen. Dabei werden die zu prüfenden Objekte als Parameter übergeben. Insgesamt verfügt die Prozedur über vier Parameter, die wir nachfolgend erläutern:

Parameter

Beschreibung

OBJECTS

Eine Liste von SQLScript Prozeduren und Funktionen, die geprüft werden sollen.

RULES

Die bei der Prüfung verwendeten Regeln. Können der Tabelle sqlscript_analyzer_rules entnommen werden.

OBJECT_DEFINITIONS

Enthält die Namen und Definitionen aller geprüfter Objekte.

FINDINGS

Enthält potenzielle Probleme, die bei der Prüfung festgestellt wurden.

 

Anbei ein Beispiel für den Aufruf der Prozedur ANALYZE_SQLSCRIPT_OBJECTS. Dabei werden alle Prozeduren vom Typ SQLScript im Schema DRS gescannt. Es können auch mehrere Schemen gleichzeitig überprüft werden.

DO BEGIN
lt_rules =
  SELECT rule_namespace,
                   rule_name,
                   category
    FROM sqlscript_analyzer_rules;

lt_procedures =
  SELECT  schema_name,
                    procedure_name AS object_name, --object_name erwartet
                      definition

  FROM sys.procedures  
    WHERE procedure_type = 'SQLSCRIPT2' AND schema_name
IN('DRS','[SCHEMA_NAME]','[ANOTHER_SCHEMA_NAME]');

CALL analyze_sqlscript_objects( :lt_procedures,
                                :lt_rules,
                                lt_objects,
                                lt_findings);

  SELECT objects.schema_name, objects.object_name, findings.*,
objects.object_definition  

  FROM :lt_findings AS findings  

  JOIN :lt_objects AS objects  

  ON objects.object_definition_id = findings.object_definition_id;

END;

Das Ergebnis der Analyse ist in Spalten RULE_NAME und SHORT_DESCRIPTION einsehbar. Die Spalte OBJECT_DEFINITION zeigt den betroffenen Code.

302-ergebnis-der-analyse_SQL Funktionen

Das Ganze funktioniert auch mit Funktionen. Sie müssen lediglich im Aufruf procedure mit function ersetzen:

DO BEGIN
lt_rules =
  SELECT rule_namespace,
                   rule_name,
                   category
  FROM sqlscript_analyzer_rules;

lt_functions =
  SELECT  schema_name,
                    function_name AS object_name, --object_name erwartet
                    definition
  FROM sys.functions  
    WHERE function_type = 'SQLSCRIPT2' AND schema_name
IN('DRS','[SCHEMA_NAME]','[ANOTHER_SCHEMA_NAME]');

CALL analyze_sqlscript_objects( :lt_functions,
                                                   :lt_rules,
                                                    lt_objects,
                                                      lt_findings);


SELECT objects.schema_name, objects.object_name, findings.*,
objects.object_definition  
FROM :lt_findings AS findings  
JOIN :lt_objects AS objects  
ON objects.object_definition_id = findings.object_definition_id;
END;

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

SAP SQLScript Whitepaper


ANALYZE_SQLSCRIPT_DEFINITION

Im Gegensatz zu der vorher vorgestellten Prozedur, welche die Code Repository nach Verbesserungspotentialen scannt, kann ANALYZE_SQLSCRIPT_DEFINITION dazu verwendet werden, um den Quellcode noch nicht erstellter Prozeduren oder Funktionen zu analysieren. Es ist nützlich, den Code zu überprüfen, bevor man eine Prozedur anlegt. Dabei ist das Vorgehen ähnlich wie bei der Prozedur ANALYZE_SQLSCRIPT_OBJECTS - Sie übergeben die Regeln und den Quellcode als Parameter. Die Ergebnisse werden in Form einer Tabelle ausgegeben. Die Prozedur ANALYZE_SQLSCRIPT_DEFINITION verfügt über die folgenden Parameter:

Parameter

Beschreibung

OBJECT_DEFINITIONS

Enthält den zu prüfenden Quellcode.

RULES

Die bei der Prüfung verwendeten Regeln. Können der Tabelle sqlscript_analyzer_rules entnommen werden.

FINDINGS

Enthält potenzielle Probleme, die bei der Prüfung festgestellt wurden.

 

Der Aufruf der Prozedur kann zum Beispiel so erfolgen:

DO BEGIN
lt_rules =
SELECT rule_namespace,
rule_name,
category
FROM sqlscript_analyzer_rules;

CALL analyze_sqlscript_definition(
'
CREATE PROCEDURE concatenate_name(
IN lv_firstname NVARCHAR(30),
IN lv_lastname NVARCHAR(30),
OUT lv_name NVARCHAR(62)
)
AS BEGIN
DECLARE lv_output NVARCHAR(62) default '' '';
lv_name = lv_firstname || '' '' || lv_lastname;
END;
',
:lt_rules,
lt_findings);
SELECT * FROM :lt_findings;
END;

Die Ergebnisse werden genauso wie bei  ANALYZE_SQLSCRIPT_OBJECTS in einer Tabelle dargestellt.

303-ergebnis-der-quellcode-analyse_SQL Funktionen

Das Ganze funktioniert auch analog mit der CREATE FUNCTION Anweisung:

DO BEGIN
lt_rules =
SELECT rule_namespace,
rule_name,
category
FROM sqlscript_analyzer_rules;

CALL analyze_sqlscript_definition(
'
CREATE FUNCTION udf_concatenate_name(
lv_firstname NVARCHAR(30),
lv_lastname NVARCHAR(30)
)
RETURNS lv_name NVARCHAR(62)
AS BEGIN
lv_name = lv_firstname || '' '' || lv_lastname;
END;
',
:lt_rules,
lt_findings);
SELECT * FROM :lt_findings;
END;

SQL Funktionen - Unser Fazit

In diesem Artikel haben Sie zwei hilfreiche Prozeduren zur Steigerung von SQLScript Performance kennengelernt. Zum einen können Sie bereits vorhandene Prozeduren und Funktionen scannen und nachbessern. Zum anderen können Sie Ihren Quellcode bereits in der Spezifikationsphase prüfen und so mögliche Performance Probleme von vornherein verhindern.

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

avatar

Sebastian Uhlig

Sebastian berät seit 2001 Unternehmen verschiedener Branchen zu SAP BI Lösungen im In- und Ausland und deckt den Bereich der Anforderungsaufnahme bis zur Realisierung komplexer Lösungen ab. Er hat Erfahrung in der Leitung von Projektteams und ist Architekt des Produktes NextTables. Privat fährt er Mountainbike und sieht sich gerne American Football Spiele an.

Sie haben eine Frage zum Blog?
Fragen Sie Sebastian Uhlig

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