In den letzten beiden Artikeln habe ich eine SQL Stored Procedure vorgestellt, die zwei Ergebnismengen erzeugt. Diese beiden Mengen sollen in Db2 Web Query als Input verwendet werden, um verschiedene Reports zu erzeugen. Den Code für diese Prozedur, die ich SPTKL nannte, finden Sie im ersten Artikel zu dieser Reihe.
Im letzten Artikel wurde die Stored Procedure für die Verarbeitung mit Db2 Web Query vorbereitet, indem die erforderlichen Metadaten erstellt wurden. Nun wird anhand der erstellten Metadaten zunächst ein Report erzeugt. Danach werden verschiedene Manipulationen der Metadaten durchgeführt, damit eine komplexe Visualisierung mit einfachen Mitteln durchgeführt werden kann.
Visualisierung der Daten einer Stored Procedure
Ausnahmsweise nehme ich einmal das Ergebnis meiner Artikelserie vorweg. Die Daten, die für die Erstellung der folgenden Visualisierung verwendet wurden, stammen von einer Stored Procedure, die in den letzten beiden Artikeln schrittweise für die Verwendung von Web Query vorbereitet wurde.
Die als Beispiel verwendete Stored Procedure (SP):
— Stored Procedure zum Vergleichen der Monatswerte Umsatz, Kosten und Profit eines Jahres mit denen des Vorjahres
CREATE OR REPLACE PROCEDURE Qwqcent.SPTKL()
DYNAMIC RESULT SETS 2
LANGUAGE SQL
BEGIN
DECLARE C1 CURSOR FOR
WITH A AS (
SELECT Country, Region, State, City, YEAR(Orderdate) AS Ordyy,
MONTH(Orderdate) AS Ordm, MONTHNAME(Orderdate) AS Ordmn,
(Linetotal * Quantity) AS Revenue, (Costofgoodssold * Quantity) AS Extcost,
(Linetotal * Quantity) – (Costofgoodssold * Quantity) AS Extprofit
FROM Qwqcent.Orders O
JOIN Qwqcent.Stores S
ON O.Storecode = S.Storecode
)
SELECT Country, Region, State, City, Ordyy,
Ordyy || ‘-‘ || Substr(Digits(Ordm), 9, 2) AS Period, Ordmn,
Sum(Revenue) AS Periodrev, Sum(Extcost) AS Periodcost,
Sum(Extprofit) AS Periodprofit
FROM A
GROUP BY Country, Region, State, City, Ordyy, Ordyy || ‘-‘ ||
Substr(Digits(Ordm), 9, 2), Ordmn
ORDER BY Country, Region, State, City, Ordyy, Ordyy || ‘-‘ ||
Substr(Digits(Ordm), 9, 2), Ordmn Desc;
DECLARE C2 CURSOR FOR
WITH A AS (
SELECT Producttype, Productcategory, Productname, Model, O.Productnumber,
Year(Orderdate) AS Ordyy, Month(Orderdate) AS Ordm,
Monthname(Orderdate) AS Ordmn, (Linetotal * Quantity) AS Revenue,
(Costofgoodssold * Quantity) AS Extcost,
(Linetotal * Quantity) – (Costofgoodssold * Quantity) AS Extprofit
FROM Qwqcent.Orders O
JOIN Qwqcent.Inventory I
ON O.Productnumber = I.Productnumber
)
SELECT Producttype, Productcategory, Productname, Model, Productnumber,
Ordyy || ‘-‘ || Substr(Digits(Ordm), 9, 2) AS Period, Ordmn,
Sum(Revenue) AS Periodrev, Sum(Extcost) AS Periodcost,
Sum(Extprofit) AS Periodprofit
FROM A
GROUP BY Producttype, Productcategory, Productname, Model, Productnumber, Ordyy ||
‘-‘ || Substr(Digits(Ordm), 9, 2), Ordmn
ORDER BY Producttype, Productcategory, Productname, Model, Productnumber, Ordyy ||
‘-‘ || Substr(Digits(Ordm), 9, 2), Ordmn DESC;
OPEN C1;
OPEN C2;
SET RESULT SETS CURSOR C1, CURSOR C2;
END;
Die Prozedur kann nun in SQL-Scripts ausgeführt werden mit:
CALL QWQCENT.SPTKL();
Als Ergebnis sollten dadurch die beiden Ergebnisfenster erstellt werden:
Weitere Informationen zur Erstellung des Synonyms für die Stored Procedure finden Sie in den beiden vorherigen Artikeln.
Mit den Daten einer Stored Procedure mit zwei Ergebnismengen einen Report erstellen
Wie bereits erwähnt, liefert die Stored Procedure zwei Ergebnismengen, die standardmäßig mit ANSWERSET1 und ANSWERSET2 bezeichnet werden. Für einen Report können immer nur Felder einer Ergebnismenge verwendet werden. Wird diese Regel nicht beachtet und werden für einen Report Felder aus beiden Ergebnismengen eingesetzt, führt das zu einem Abbruchfehler.
Daher ist immer zu beachten:
Für einen Report können immer nur Daten eines ANSWERSET verwendet werden können.
Mit der Version 2.3.0 von Db2 Web Query sind zwei Tools zum Erstellen von Reports verfügbar:
- InfoAssist
- Designer
Im folgenden zeige ich Ihnen für jedes Tool wie die Erstellung von zwei Auswertungen mit einem Synonym erfolgen kann.
InfoAssist: Zwei Berichte / Auswertungen gleichzeitig für beide Antwortsets erstellen:
Im folgenden Beispiel erstelle ich mit den beiden Antwortsets zwei getrennte Auswertungen in einem Schritt. Mit dem ANSWERSET1 wird ein wird Raster (= Berichtsformat) erzeugt. Das ANSWERSET2 dient als Grundlage für ein Diagramm mit dem Profit nach Produkttypen und Periode.
Der Einstieg erfolgt über das Hauptportal und der Auswahl Arbeitsbereiche. Damit erscheinen die bereits vorhandenen Arbeitsbereiche. Wählen Sie Ihren Arbeitsbereich aus (für mein Beispiel verwende ich den Arbeitsbereich a_tkl).
Als nächstes wähle ich InfoAssist + Visualisierung. Damit kann ich gleichzeitig mehrere Auswertungen erstellen.
Nach Auswahl der Datenquelle, welche als Synonym für die Stored Procedure erstellt wurde (bei mir: tkl_sptkl), werden die Datenfelder wie folgt angezeigt:
Leider ist hier nicht sofort zu erkennen, welche Daten zu ANSWERSET1 und welche zu ANSWERSET2 gehören.
Abhilfe schafft hier die Menüauswahl Ansicht und danach Strukturiert. Damit wird eine hierarchische Datenstruktur erstellt, bei der die Felder der beiden Datenmengen getrennt dargestellt werden:
Mit der Auswahl Start –> Einfügen füge ich nun ein Raster und ein Diagramm ein.
Für das Raster verwende ich die Datenfelder von ANSWERSET1 und für das Diagramm die Datenfelder von ANSWERSET2 und erhalte die folgenden Auswertungen:
Hier sind nochmals die einzelnen Schritte aufgeführt:
Auswahl: InfoAssist –> Visualisierung –> Synonym tkl_sptkl –> Ansicht –> Strukturiert (damit Übersicht nach ANSWERSET1 und ANSWERSET2) –> Einfügen Raster –> Einfügen Diagramm –> Felder aus ANSWERSET1 in Raster-1, Felder aus Answerset2 in Diagramm1
Designer: Zwei Berichte / Auswertungen gleichzeitig für beide Antwortsets erstellen:
Das Arbeiten mit dem Designer wird über das Hauptportal und der Auswahl Daten visualisieren gstartet. Danach erfolgt die Auswahl der Datenquelle (wie oben). Im Unterschied zur Arbeit mit dem InfoAssist werden hier die beiden Answersets bereits getrennt angezeigt.
Um mehrere Auswertungen wie Raster und Diagramme darstellen zu können, werden hier sogenannte Container verwendet.
Damit kann nun ein Bericht (= Raster) und ein Diagramm entsprechend der Anordnung wie mit dem InfoAssist erstellt werden.
Vorschau:
Im nächsten Artikel im TechKnowLetter zeige ich Ihnen, wie das Synonym für die hier beschriebene Stored Procedure überarbeitet und dann für die Visualisierung mit Web Query verwendet werden kann.Bis dahin wünsche ich Ihnen weiterhin viel Spaß beim Vermehren Ihrer Fertigkeiten.
Der Autor Theo Bär schreibt regelmäßig für den TechKnowLetter.
Sie erreichen ihn unter
EDV-Beratung Theo Bär
Ringmauerweg 1
69250 Schönau
Tel.: (+49) 6228 912 630
E-Mail: [info@edv-baer.com]
Sechs Ausgaben des TechKnowLetters erhalten Sie hier für 88 Euro.