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

Business Intelligence

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
Abonnieren Sie jetzt unseren monatlichen Newsletter:
Newsletter abonnieren
 

Der versteckte JSON-Hack für Database Hints in SAP Datasphere

Wer regelmäßig mit SAP Datasphere arbeitet, kennt das Phänomen. Eine View liefert nicht die erwarteten Ergebnisse oder läuft quälend langsam. In den meisten Fällen lässt sich die Ursache schnell auf einen Anwenderfehler oder ein Missverständnis der SQL-Logik zurückführen. Doch was tun, wenn man alle naheliegenden Ursachen ausgeschlossen hat und das Problem hartnäckig bestehen bleibt? In diesem Beitrag schaffen wir Abhilfe.

In 99% der Fälle ist die Problemursache vor dem Monitor zu finden. In den allermeisten Fällen handelt es sich hierbei um einen Anwenderfehler oder ein fehlendes Verständnis der zugrunde liegenden SQL-Logik. Bei dem verbleibenden 1 % handelt es sich jedoch um ein schwerwiegendes Problem, das auf einen Bug im HANA Database (DB) Query Optimizer zurückzuführen ist.

Zum Glück tritt der Fehler nur selten auf. Nach fünf Jahren intensiver Arbeit mit SAP Datasphere und HANA sowie dutzenden erfolgreich umgesetzten Projekten trat der Fehler nur drei - vier Mal auf. Dennoch möchten wir unsere Erfahrungen teilen, wie Sie in solchen Ausnahmefällen reagieren können.

Zunächst gehen wir auf die zugrundeliegende Ursache ein und zeigen auf, wie Sie Database Hints nutzen können, um das Problem zu lösen. Dabei zeigen wir eine bisher nicht dokumentierte Lösung in Datasphere, die es erlaubt, Database Hints in Datasphere Objekten zu nutzen.

Problemstellung

Die Anomalie wird durch einen Bug im HANA Database Optimizer verursacht. Die Datenbank wählt manchmal eine mathematische „Abkürzung“, die allerdings für den spezifischen Datenkontext logisch unzulässig ist. So werden zum Beispiel Beträge vor der Währungsumrechnung aggregiert, was zu falschen Ergebnissen führt. Dieses Phänomen tritt auf, wenn der Optimizer fälschlicherweise einen „Aggregation Pushdown“ forciert. Bei der Währungsumrechnung ist dies jedoch ein Trugschluss. Da Wechselkurse variabel sind und pro Datensatz (z. B. nach Tagesdatum) variieren können, führt eine Summenbildung vor der Umrechnung zur falschen Summe. Der Optimizer „opfert“ hierbei die semantische Korrektheit zugunsten einer vermeintlich höheren Performance durch Reduzierung der zu verarbeitenden Zeilenanzahl. 

Um sicherzustellen, dass HANA die Schritte in der korrekten Reihenfolge ausführt, also zuerst die Währungsumrechnung durchführt und erst danach die Werte aggregiert, können Sie sogenannte Datenbank Hints nutzen. Diese erlauben es Ihnen, die automatische Auswahl des SQL-Optimierers gezielt zu überschreiben und einen fest definierten Ausführungsplan für die Abfrage zu erzwingen. 

Database Hints 

Einführung

Datenbank-Hints in SAP HANA sind spezifische Anweisungen, die genutzt werden, um das Standardverhalten des SQL-Optimierers zu beeinflussen oder zu erzwingen. Normalerweise entscheidet der Optimierer, basierend auf Statistiken und Heuristiken, selbständig, welcher Ausführungsplan (z. B. welche Engine genutzt wird oder wie die Joins erfolgen sollen) am effizientesten ist. Ein Hint kommt dann zum Einsatz, wenn diese automatische Entscheidung - wie im Fall der fehlerhaften Vor-Aggregierung - zu suboptimaler Performance oder logisch falschen Ergebnissen führt.

Syntax

Bei SQL Statements werden die Hints am Ende nach der WITH HINT-Klausel platziert. Zum Beispiel, wenn wir es mit Massen-Aggregationen zu tun haben, und die OLAP Engine nutzen wollen, können wir USE_OLAP_PLAN nutzen.


SELECT * FROM TABLE1 WITH HINT( USE_OLAP_PLAN ); 

Bei CDS Views werden die Hints im Header definiert. Zum Beispiel:
@Consumption.dbHints: ['USE_OLAP_PLAN'] 

Auch bei Datasphere Artefakten wie Analytischen Modellen können Sie Datenbank Hints im folgenden Format definieren:


"@Analytics.dbHints": [
  {
    "engine": "SQL",
    "hints": [
      {
        "key": "NO_PREAGGR_BEFORE_CONVERT_CURRENCY",
        "value": "true"
      }
    ]
  }
]

Wie genau Sie es einbinden können, erfahren Sie im nächsten Kapitel.


Sehen Sie sich die Aufzeichnung unseres Webinars an: "Bridging Business and Analytics: The Plug-and-Play Future of Data Platforms"


Typische Anwendungsfälle und Referenz

Neben den Ausführungs-Engines (OLAP, HEX, ESX)  können Sie auch spezielle Verhaltensweisen beeinflussen. So können Sie zum Beispiel mit den Hints CS_AGGR und NO_CS_AGGR die Column Store Aggregation steuern. CS_AGGR Hint weist den Optimizer an, die Aggregation so weit wie möglich direkt in der Column Engine durchzuführen. Anstatt die Daten Zeile für Zeile auszulesen, werden ganze Spaltenblöcke gleichzeitig aggregiert.

Allerdings kann diese Optimierung bei komplexen benutzerdefinierten Funktionen oder speziellen Join-Bedingungen zu fehlerhaften Ergebnissen führen. In diesem Fall können Sie mit NO_CS_AGGR erzwingen, dass die Aggregation nicht in der Column Engine stattfindet.

Eine vollständige Liste der DB Hints können Sie unter SAP HANA SQL Reference Guide for SAP HANA Platform sowie in der SAP Note 2142945 - FAQ: SAP HANA Hints finden.

Den richtigen Hinweis finden

Wie finden Sie aber aus der ellenlangen Liste der Hint, der Ihr Problem löst? Leider gleicht die Suche nach dem richtigen Datenbank-Hint oft methodischer Detektivarbeit. Zwar weist SAP in der Note 2142945 - FAQ: SAP HANA Hints auf spezifische Bugs hin, die der eine oder andere Hint lösen kann. Allerdings deckt die Note bei weitem nicht alle Fehler ab, die im Projektalltag auftreten können. 

Ein systematischer Ansatz besteht darin, den SQL Execution Plan (PlanViz) der fehlerhaften Abfrage mit dem Plan einer manuell korrigierten Version zu vergleichen. Indem man eine äquivalente Abfrage erstellt, die beispielsweise durch einen Hint die logisch richtige Reihenfolge erzwingt, erhält man ein Referenzmodell. Der direkte Vergleich der Plan-Schritte im SAP HANA PlanViz offenbart dann oft die problematische Stelle.

Analytische Modelle mit Database Hints versehen

Zum Schluss möchten wir  Ihnen zeigen, wie wir das Problem mit der fehlerhaften Währungsumrechnung gelöst haben. Nach einer ausführlichen Analyse und mit Unterstützung der SAP mussten wir unser Analytisches Modell mit dem DB Hint NO_PREAGGR_BEFORE_CONVERT_CURRENCY versehen.

database Hints Planviz

Exportieren Sie dazu die CSN-/JSON-Definition des Objekt in Datasphere Data Builder. 

SAP-Data-Builder-export_json

Öffnen Sie die Datei im Editor Ihres Vertrauens, z.B. Notepad++. Hier können Sie die Objektdefinition im JSON Format sehen. 

Daatabase_Hints_ZDR_000_AM_DAILY_REVENUE_json

Fügen Sie die folgende JSON Notation in die Definition von Ihrem Analytischen Modell ein:


            "@Analytics.dbHints": [
                {
                    "engine": "SQL",
                    "hints": [
                        {
                            "key": "NO_PREAGGR_BEFORE_CONVERT_CURRENCY",
                            "value": "true"
                        }
                    ]
                }
            ],

Added_Database_Hints_ZDR_000_AM_DAILY_REVENUE_json

Schließen Sie nun das Objekt und wechseln Sie zu dem Hauptbildschirm von Data Builder. Hier können Sie die angepasste JSON Datei importieren.

SAP-Data-Builder-json-importieren

Details zu dem Vorgehen finden Sie in unserem Artikel SAP Datasphere JSON Hack: Umwandlung grafischer Views in SQL Views.

Database Hints in SAP Datasphere: Unser Fazit

Fehlerhafte Abfrageergebnisse in SAP Datasphere liegen meist an der fehlerhaften Anwendung  - doch wenn der HANA Optimizer streikt, ist technisches Fachwissen gefragt. Dabei bieten Database Hints den entscheidenden Hebel, um die Datenintegrität bei Bugs wie der fehlerhaften Vor-Aggregation zu gewährleisten. Durch den vorgestellten JSON-Hack lassen sich diese Korrekturen nun auch direkt in Datasphere-Objekten umsetzen. Nutzen Sie diesen Workaround als Joker für die wirklich hartnäckigen Fälle.

Stehen Sie vor ähnlichen Herausforderungen in Ihrem Datasphere-Projekt oder benötigen Sie Unterstützung bei der Analyse komplexer Performance- und Logikprobleme? Kontaktieren Sie uns - wir freuen uns darauf, gemeinsam mit Ihnen die passende Lösung zu finden. 

 

 

FAQ - Database Hints in SAP Datasphere

Hier finden Sie einige der häufigst gestellten Fragen zu Database Hints in SAP Datasphere.

Warum liefert SAP Datasphere unerwartete oder falsche Ergebnisse? In 99 % der Fälle liegt die Ursache bei einem Anwenderfehler oder einem fehlenden Verständnis der SQL-Logik. Wenn Sie jedoch alle naheliegenden Ursachen ausgeschlossen haben, kann es sich in seltenen Fällen um einen Bug im HANA DB Query Optimizer handeln, der eine logisch unzulässige Abkürzung bei der Datenverarbeitung nimmt. 
Was ist ein typisches Beispiel für einen solchen Fehler im HANA DB Query Optimizer? Ein Beispiel ist der sogenannte „Aggregation Pushdown“ bei der Währungsumrechnung. Um die Performance zu steigern, aggregiert der Optimizer Beträge, bevor die Währungsumrechnung stattfindet. Da Wechselkurse aber variabel sind (z. B. nach Tagesdatum), führt diese Vor-Aggregation zu falschen Summen. 
Was sind SAP HANA Datenbank Hints? Datenbank-Hints sind spezifische Anweisungen, die das Standardverhalten des SQL-Optimierers beeinflussen oder überschreiben. Wenn der Optimierer automatisch einen ineffizienten oder (wie im Fall der Vor-Aggregation) fehlerhaften Ausführungsplan wählt, zwingen Hints die Datenbank dazu, die Schritte in der logisch korrekten Reihenfolge und Engine auszuführen. 
Wann sollte ich einen Database Hint einsetzen? Database Hints kommen dann zum Einsatz, wenn der HANA Optimizer aufgrund eines Bugs bzw. einer ungünstigen Heuristik logisch falsche Ergebnisse oder schlechte Performance liefert und alle anderen Fehlerquellen (Anwenderfehler, SQL-Logik, Modellierung) ausgeschlossen sind. 
Wie wende ich einen Datenbank Hint in SAP Datasphere (z.B. bei Analytischen Modellen) an?

Da dies in der grafischen Oberfläche nicht standardmäßig verfügbar ist, nutzen wir einen "JSON-Hack":

  1. Exportieren Sie die CSN-/JSON-Definition des betroffenen Objekts im Datasphere Data Builder.
  2. Öffnen Sie die Datei in einem Texteditor (z. B. Notepad++).
  3. Fügen Sie die Hint-Notation (unter dem Schlüssel "@Analytics.dbHints") in die Definition ein.
  4. Importieren Sie die angepasste JSON-Datei wieder in den Data Builder.

Welcher Hint löst das Problem der falschen Aggregation vor der Währungsumrechnung? Um zu erzwingen, dass zuerst die Währungsumrechnung und erst danach die Aggregation stattfindet, nutzen Sie den Hint NO_PREAGGR_BEFORE_CONVERT_CURRENCY und setzen den Wert auf "true". 
Wo finde ich eine vollständige Liste aller verfügbaren Database Hints? Eine umfassende Übersicht bietet der SAP HANA SQL Reference Guide for SAP HANA Platform sowie die SAP Note 2142945 – FAQ: SAP HANA Hints.
Wie finde ich heraus, welcher Hint mein Problem löst? Die Suche ist oft methodische Detektivarbeit. Ein bewährter Ansatz ist der Vergleich des SQL Execution Plans (PlanViz) der fehlerhaften Abfrage mit dem Plan einer manuell korrigierten Variante. So lässt sich der problematische Schritt im Ausführungsplan identifizieren und gezielt mit einem passenden Hint adressieren. 
An wen kann ich mich wenden, wenn ich das Problem nicht selbst lösen kann? Wenn Sie vor hartnäckigen Herausforderungen bei Performance- und Logikproblemen in Ihrem Datasphere-Projekt stehen, können Sie uns gerne direkt kontaktieren. Wir unterstützen Sie bei der detaillierten Fehleranalyse und Lösungsfindung. 

,

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.
Der versteckte JSON-Hack für Database Hints in SAP Datasphere
7:48

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