Eine virtuelle Funktion ist eine spezielle Tabelle, die zu einer Menge von Eingabewerten eine Ergebniszeile zurückgibt, welche zur Laufzeit der Abfrage berechnet wird. Diese existiert nicht auf der Datenbank, sondern wird vom SAS emuliert. Diese Dokumentation beschreibt im Folgenden die virtuelle Funktion für die explizite Joint-Optimierung.
1 Begriffsbestimmung
Eine virtuelle Funktion ist eine spezielle Tabelle, die zu einer Menge von Eingabewerten eine Ergebniszeile zurückgibt, welche zur Laufzeit der Abfrage berechnet wird. Diese existiert nicht auf der Datenbank, sondern wird vom SAS emuliert. Eine virtuelle Funktion wird normalerweise an eine andere Tabelle verbunden, um diese um die berechneten Felder zu erweitern.
2 Zielgruppe
- Consultants
- Entwickler
3 Join-Optimierung
Die virtuelle Funktion „pgm_JoinOptimization“ wird verwendet, um die Join-Optimierung für eine gejointe Tabelle eines Business Objects zu erzwingen. Die Tabellen zu Business Objects mit der Datenart „Stammdaten“ werden, wenn möglich, automatisch aus dem auszuführenden ODBC-SQL-Statement entfernt und über den Persistenzdienst des Application-Servers unter Nutzung des Shared-Cache nachgeladen. Durch die Vereinfachung der Datenbankanweisung und durch Nutzung des Shared-Cache wird in der Regel die Ausführungsgeschwindigkeit des Berichtes steigen. Durch die Verwendung dieser virtuellen Funktion kann das beschriebene Verhalten auch für Tabellen von Business Objects mit einer anderen Datenart (z.B. Bewegungsdaten) erzwungen werden. Dazu wird die virtuellen Funktion zwischen den eigentlichen Join geschaltet. Die virtuelle Funktion wird mit der Basis-Tabelle über die in der Join-Bedingung verwendeten Spalten mit den Eingabeparametern des entsprechenden Typs verknüpft. Die zu joinende Tabelle wird über deren Schlüsselspalten mit den zugehörigen Spalten der virtuellen Funktion verknüpft. Es gelten die Einschränkungen für die Verwendung von virtuellen Funktionen.
Die virtuelle Funktion unterstützt derzeit nur Schlüssel von Business Objects, die aus maximal zwei GUID-Attributen bestehen.
Die Tabelle hat folgende Spalten:
pgm_JoinOptimization | |
Spaltenname | Beschreibung |
in_guid1_ | Diesem Eingabeparameter kann eine GUID zugewiesen werden. |
in_guid2 | Diesem Eingabeparameter kann eine GUID zugewiesen werden. |
Beispiel
Zu der Vertriebsauftragsposition soll der zugehörige Vertriebsauftrag ausgegeben werden. Das nachstehende ODBC-SQL-Statement wird komplett auf der Datenbank ausgeführt:
SELECT SD.number, S.number
FROM app_sales_SalesOrderDetail SD LEFT OUTER JOIN app_sales_SalesOrder S ON SD.header_=S.guid_
Um die Daten des Vertriebsauftrages unter Nutzung des Shared Cache zu lesen, wird der Join zweistufig über die virtuelle Funktion “pgm_JoinOptimization“ formuliert:
SELECT SD.number, S.number
FROM (app_sales_SalesOrderDetail SD LEFT OUTER JOIN pgm_JoinOptimization VF ON VF.in_guid1_=SD.header_) LEFT OUTER JOIN app_sales_SalesOrder S ON S.guid_=VF.in_guid1_
Der ODBC-Server entfernt die virtuelle Funktion und abhängige Tabellen aus dem ODBC-SQL-Statement und lädt die benötigten Daten über den Persistenzdienst nach.