Ansicht
Dokumentation

CL_RSDRD_SELDEL_PART - selective deltion from a table using truncate partition

CL_RSDRD_SELDEL_PART - selective deltion from a table using truncate partition

Fill RESBD Structure from EBP Component Structure   ROGBILLS - Synchronize billing plans  
Diese Dokumentation steht unter dem Copyright der SAP AG.
SAP E-Book

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__SQL_STMT werden daraus native DELETE Statements gebaut und ausgeführt.

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 ''FROM"/BIC/E100303" "E"WHERE
    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 )