Ansicht
Dokumentation
CL_RSDRD_SELDEL_PART - selective deltion from a table using truncate partition
Fill RESBD Structure from EBP Component Structure ROGBILLS - Synchronize billing plansDiese Dokumentation steht unter dem Copyright der SAP AG.
Funktionalität
Die Klasse CL_RSDRD_SELDEL_PART implementiert den TRUNCATE von Partitionen beim selektiven Löschen. Als Interface dient die Methode IF_RSDRD_SELDEL_TAB~EXECUTE. Ein TRUNCATE wird nur auf solchen Partitionen ausgeführt, die nach der Ausführung des eigentlichen DELETE-Statements keine Daten mehr enthalten würden.
Die SX_QUERY Struktur wurde mit Release 7.10 erweitert und dient als Schnittstellt zur plattformunabhängigen
Beschreibung eines DELETE Statements ( returntp = rsdrs_c_returntp-db_delete ). In den Klassen CL_RSDRS_SQL_QUERY und CL_RSDRS_
In der Klasse CL_RSDRD_SELDEL_PART wird die Definition des DELETE-Statements verwendet, um über die negierte Löschbedingung diejenigen Partitionen zu identifizieren, die nach der Ausführung des DELETE-Statements keine Daten mehr enthalten würden. Diese können dann mit TRUNCATE PARTITION gelöscht werden. Trifft die negierte Löschbedingung angewendet auf eine Partition keinen Datensatz, so ist diese Partition nach der Ausführung des DELETE-Statemets leer und kann vorab über TRUNCATE PARTITION gelöscht werden. Die Verwendung der negierten Löschbedingung erspart das Zählen von Datensätzen, so dass die Verprobung schnell ausgeführt werden kann
Methoden | Beschreibung |
IF_RSDRD_SELDEL_TAB~EXECUTE | Löschvorgang ausführen |
IF_RSDRD_SELDEL_TAB~GET_TABLNM | Tabellennamen zurückgeben |
IF_RSDRD_SELDEL_TAB~GET_SX_QUERY | sx_query Struktur zurückgeben |
IF_RSDRD_SELDEL_TAB~GET_DEL_CNT | Anzahl gelöschter Datensätze zurückgeben |
IF_RSDRD_SELDEL_TAB~GET_STATUS | Aktuellen Status des Löschvorgangs zurückgeben |
IF_RSDRD_SELDEL_TAB~GET_LOG | Protokoll zurückgeben |
FACTORY | Factory |
CONSTRUCTOR | constructor |
GET_DEL_CNT | Anzahl gelöschter Datensätze |
GET_PART_INFO | Info über Partitionen |
GET_PARALLEL_DEGREE | Anzahl paralleler Prozesse |
SET_PARALLEL_DEGREE | Anzahl paralleler Prozesse |
APPEND_ERROR_MESSAGES | Fehlermeldungen an das Applikationslog anhängen |
BUILD_TX_QUERY_PART | sx_query_inv für jede Partition |
FIND_TRUNC_PART | Liste von Partitionen die gelöscht (truncate) werden können |
INVERT_SX_QUERY | sx_query mit inversen Löschbedingungen bauen |
EXEC_BEFORE_DELETE | Für DB Platformen. Wird vor dem Delete ausgeführt |
SET_DEFAULT | Für DB Palttformen: Initialwerte für Klassenattribute setzen |
ELIM_PART_LOG | Partitionen logisch eliminieren |
TRUNC_PART | Inhalt ganzer Partitionen löschen |
Beziehungen
Die Klasse CL_RSDRD_SELDEL_PART wird nie alleine, sonder immer im Zusammenhang mit der Klasse CL_RSDRD_SELDEL_PACK erzeugt, um größere Datenmengen aus BW Datenzielen (InfoCube, ODS) zu löschen. Die Klasse CL_RSDRD_SELDEL_PART ist somit ein effizienter 'Vorlöscher' für partitionierte Tabellen, der alleine der Laufzeitverkürzung des eigentlichen DELETE-Statements dient. Das DELETE-Statement selber wird in der Klasse CL_RSDRD_SELDEL_PACK generiert und nach dem Löschen der Partitionen abgesetzt.
Beispiel
Um zu überprüfen, ob eine Partition nach einem selektiven Löschvorgang leer ist, wird die WHERE-Bedingung des eigentliche DELETE-Statements invertiert. Danach wird für jede Tabellenpartition einzeln geprüft, ob es bezüglich der inversen Löschbedingung mindestens einen Datensatz in der Partition gibt. Ist das der Fall, d.h. wird bezüglich der inversen Löschbedingung ein Datensatz selektiert, dann kann die betroffene Tabellenpartition nach dem Löschen nicht leer sein. Wird kein Datensatz selektiert, dann ist die betroffene Tabellenpartition nach dem Löschen leer und kann somit laufzeitoptimiert eliminiert werden, z.B. mit 'TRUNCATE PARTITION'.
Beispiel für eine Inverse Prüf-Query:
SELECT '
NOT(
<<< Beginn der invertierten Löschbedinung
"E"."KEY_1003031" IN (
SELECT "DIM1"."DIMID"
FROM "/BIC/D1003031" "DIM1"
JOIN "/BI0/SCALMONTH" "MD1"
ON "DIM1" . "SID_0CALMONTH" = "MD1" . "SID"
WHERE ( "MD1"."CALMONTH" BETWEEN '200402' AND '200404' ) )
AND "E"."KEY_1003036" IN (
SELECT "DIM2"."DIMID"
FROM "/BIC/D1003036" "DIM2"
JOIN "/BIC/SIAAE_M1" "MD2"
ON "DIM2" . "SID_IAAE_M1" = "MD2" . "SID"
WHERE ( "MD2"."/BIC/IAAE_M1" BETWEEN '01' AND '10' ) )
AND ( "E"."KEY_1003037" IN (
SELECT "DIM3"."DIMID"
FROM "/BIC/D1003037" "DIM3"
JOIN "/BIC/SIAAE_M2" "MD3"
ON "DIM3" . "SID_IAAE_M2" = "MD3" . "SID"
WHERE ( "MD3"."/BIC/IAAE_M2" = '01') )
AND "E"."KEY_100303T" IN (
SELECT "DIM4"."DIMID"
FROM "/BIC/D100303T" "DIM4"
JOIN "/BI0/SDATE" "MD4"
ON "DIM4" . "SID_0CALDAY" = "MD4" . "SID"
WHERE ( "MD4"."DATE0" BETWEEN '20040101' AND '20040331' ) )
) <<< Ende der invertiere Löschbedinung
AND ("E"."SID_0CALMONTH" >= 200402 AND "E"."SID_0CALMONTH" < 200404 )
<<< Angehängte Einschränkung auf Tabellenpartition
Vendor Master (General Section) Vendor Master (General Section)
Diese Dokumentation steht unter dem Copyright der SAP AG.
Length: 10310 Date: 20240424 Time: 142949 sap01-206 ( 101 ms )