Virtuelle Tabelle: Klassifikationen

Alle virtuellen Funktionen und Tabellen sind in Semiramis im Unterkatalog „VIRTUAL“ eingeordnet. Diese Dokumentation beschreibt im Folgenden die virtuelle Tabelle „Klassifikationen“.

1                     Zielgruppe

  • Berater
  • Entwickler

2                     Begriffsbestimmung

Virtuelle Tabelle

Eine virtuelle Tabelle existiert nicht in der Datenbank, sondern wird vom SAS emuliert. Prinzipiell kann auf eine virtuelle Tabelle wie auf eine Datenbanktabelle zugegriffen werden. Der Inhalt einer virtuellen Tabelle wird zur Laufzeit der Abfrage bezüglich der Eingabewerte berechnet. Als Anfrageergebnis können beliebig viele Zeilen zurückgeben werden. Eine virtuelle Tabelle darf nur als einzige Tabelle in einem einfachen SQL-Statement verwendet werden.

Virtuelle Tabellen sollten verwendet werden, wenn das Anfrageergebnis mehr als eine Zeile umfassen kann. Wenn das Anfrageergebnis nur maximal eine Zeile enthält, bietet sich eine virtuelle Funktion an, da diese in Joins verwendet werden kann.

Virtuelle Funktion

Eine virtuelle Funktion ist eine spezielle Tabelle, die zu einer Menge von Eingabewerten eine Ergebniszeile zurückgibt, welche zur Laufzeit der Abfrage berechnet wird. Sie existiert nicht auf der Datenbank, sondern wird vom SAS emuliert.

Eine virtuelle Funktion wird normalerweise über einen Join vom Typ LEFT OUTER an eine andere Datenbanktabelle verbunden. Über die Join-Bedingung oder über die WHERE-Klausel wird die Zuordnung der Werte für die Eingabeparameter der virtuellen Funktion angegeben. Wenn eine Abfrage einen Join enthält, dann wird das Abfrageergebnis zuerst ohne Berücksichtigung der virtuellen Funktion in der Datenbank ermittelt. Anschließend werden für jede Ergebniszeile die Werte der Spalten der virtuellen Funktion berechnet. Dabei berechnet der SAS für die durch die Join-Bedingung festgelegte Wertebelegung der Eingangsparameter, die Werte der Ausgabe-Spalten der virtuellen Funktion.

3                     Virtuelle Tabelle

Durch die virtuelle Tabelle „Klassifikationen“ kann auf Klassifikations-Stamm­daten zugegriffen werden. Dabei wird die Organisationsabhängigkeit berücksichtigt. Die Daten werden nach Knoten und Ebene sortiert zurückgeliefert, also in der Reihenfolge, die dem völlig aufgeklappten Klassifikationsbaum entspricht. Als Eingabeparameter stehen die Spalten „in_classification_“ und „in_organizationalUnit_“ zur Verfügung. Als Ergebnis wird die Standard-Klassifikation „Attribute“ zurückgeliefert. Der Vorteil dieser virtuellen Tabelle ist, dass Sie „generische“ Berichte für Klassifikationen erstellen können, sodass nicht für jede Klassifikation ein eigener Bericht erstellt werden muss.

Die implementierende Java-Klasse ist com.cisag.app.general.log.HierarchyVirtualTable.

Die Tabelle hat folgende Spalten:

app_general_HierarchyTable
Spaltenname Beschreibung
in_classification Diesem Eingabeparameter muss der Name der Klassifikation zugewiesen werden.
in_organizationalUnit Diesem Eingabeparameter muss die GUID (als hexadezimale Zeichenkette) der Organisation zugewiesen werden.
guid Dieser Wert liefert die GUID, also den technischen Schlüssel zum Knoten.
code Dieser Wert entspricht der Identifikation des Knotens.
description Der Knoten „Bezeichnung“ kann über diesen Wert ermittelt werden.
level Dieser Wert liefert die Ebene des Knotens im Baum. Die obersten Knoten im Baum, die also keinem Knoten untergeordnet sind, haben den Wert 1. Für jede untergeordnete Ebene im Baum wird die Zahl um 1 erhöht.
parent Dieser Wert liefert die GUID, also den technischen Schlüssel, zum übergeordneten Knoten, sofern ein übergeordneter Knoten besteht.
leaf Über diesen bool’schen Wert ist abfragbar, ob der Knoten ein Endknoten ist. Ein Endknoten hat keine weiteren untergeordneten Knoten.
path Dieser Wert liefert den vollständigen Pfad des aktuellen Knotens. Die Zeichenkette besteht aus den Identifikationen aller Knoten, die auf dem Pfad liegen bis zum aktuellen Knoten, und die Identifikation des aktuellen Knotens. Die Identifikationen der Knoten werden mit einem Bindstrich voneinander getrennt.

 

Czy ten artykuł był pomocny?