Gespeicherte Prozeduren für Interact-Ereignismusterbericht

Der Interact-Ereignismusterbericht verwendet die Daten in Staging-Tabellen, die mit gespeicherten Prozeduren gefüllt werden. Die gespeicherten Prozeduren führen eine Delta-Aktualisierung durch.

Die Daten für Interact-Ereignismusterberichte werden in zwei Schritten verarbeitet:

  1. Der Interact-ETL-Prozess wandelt die BLOB-Daten der Zielgruppe in ETL-Datenbanktabellen um.
  2. Der Berichtsaggregator aggregiert die Daten für jeden Mustertyp schrittweise in einer vorkonfigurierten parallelen Ausführung. Dies ist eine spezielle Funktion für Interact-Berichtspakete.

Beide Prozesse sind in den Datenbanktrigger der Tabelle UACI_ETLPATTERNSTATERUN integriert. Dieser Trigger wird nach der erfolgreichen Ausführung des ETL-Prozesses ausgelöst und übergibt Datenbankjobs zum Aggregieren der Berichtsdaten.

In den nachfolgenden Tabellen finden Sie Informationen zu den gespeicherten Prozeduren und den Aufgaben, die sie ausführen.

Gespeicherte Prozeduren für Interact-Ereignismusterbericht
Gespeicherte Prozedur Aufgabe
SP_GENERATE_PATTERN_MATCHALL Wird intern von der Prozedur SP_POPULATE_PATTERN_MATCHALL aufgerufen. Verantwortlich für das Abrufen der Daten für Muster vom Typ "Alle abgleichen", die seit der vorherigen Ausführung der gespeicherten Prozeduren ausgeführt wurden.
SP_GENERATE_PATTERN_COUNTER Wird intern von der Prozedur SP_POPULATE_PATTERN_COUNTER aufgerufen. Verantwortlich für das Abrufen der Daten für Muster vom Typ "Zähler", die seit der vorherigen Ausführung der gespeicherten Prozeduren ausgeführt wurden.
SP_GENERATE_PATTERN_WC Wird intern von der Prozedur SP_POPULATE_PATTERN_WC aufgerufen. Verantwortlich für das Abrufen der Daten für Muster vom Typ "Gewichteter Zähler", die seit der vorherigen Ausführung der gespeicherten Prozeduren ausgeführt wurden.
SP_POPULATE_PATTERN_MATCHALL Verarbeitet die Daten des Mustertyps "Alle abgleichen", die seit der vorherigen Ausführung der gespeicherten Prozeduren empfangen wurden.
SP_POPULATE_PATTERN_COUNTER Verarbeitet die Daten des Mustertyps "Zähler", die seit der vorherigen Ausführung der gespeicherten Prozeduren empfangen wurden.
SP_POPULATE_PATTERN_WC Verarbeitet die Daten des Mustertyps "Gewichteter Zähler", die seit der vorherigen Ausführung der gespeicherten Prozeduren empfangen wurden.
Gespeicherte Prozedur Aufgabe
SP_UPDATE_UACI_TABLES_STATS

Wird vom Trigger aufgerufen, um die Datenbankstatistiken zu aktualisieren. Die Datenbankjobs werden für die Berichtsdatenaggregation übergeben.

Aktualisiert die Statistiken für die folgenden ETL-Tabellen:
  • UACI_ETLPATTERNSTATE
  • UACI_ETLPATTERNSTATEITEM
  • UACI_ETLPATTERNEVENTINFO
SP_POPULATE_PATTERN_LOCK

(p_parallel_degree)

Aktualisiert die Tabelle UARI_PATTERN_LOCK mit dem konfigurierten Grad der parallelen Ausführung.

p_parallel_degree ist der Grad der parallelen Ausführung der Aggregationsprozesse.

Für Maria DB werden die Jobs nicht unterstützt und die gespeicherten Prozeduren werden sequenziell ausgeführt.

p_parallel_degree ist immer 1 für Maria DB

SP_AGGR_RUN_STATUS Wird vom Interact-ETL-Prozess aufgerufen, bevor der Aggregationsprozess gestartet wird, um den Sperrstatus der laufenden gespeicherten Prozeduren zu überprüfen. Mit der UARI_PATTERN_LOCK-Tabelle ausführen.
SP_REFRESH_PATTERNINFO

Nur für Oracle und DB2

Aktualisiert die Tabelle UARI_PATTERNSTATE_INFO, um Informationen zum Status und zur Zielgruppenebene für die ICs und Kategorien abzurufen.

Der Aufruf für diese Prozedur erfolgt durch einen Trigger vor dem Starten der Aggregationsprozeduren.

Da Mviews für SQL Server nicht unterstützt werden, gilt diese Prozedur nicht für SQL Server.

SP_UARI_REBIND_PACKAGES

Nur für DB2

Bindet die Pakete neu, die dem Trigger und den Prozeduren für die Aggregation zugeordnet sind. Wird nach dem Aufruf der Prozedur SP_UPDATE_UACI_TABLES_STATS über den Auslöser aufgerufen.

Gespeicherte Prozedur Aufgabe
SQ_UARI_RUN Erstellt eine eindeutige Ausführungs-ID. Die Liste der Ausführungs-IDs wird in der Tabelle UARI_RUNS gespeichert.

Für SQL Server werden Ausführungs-IDs unter Verwendung der Eigenschaft IDENTITY in der Spalte RunId generiert, wodurch für jede Ausführung neue IDs generiert werden.

Datenbanktrigger
Gespeicherte Prozedur Aufgabe
TR_AGGREGATE_DELTA_PATTERNS Wurde die Tabelle UACI_ETLPATTERNSTATERUN mit dem Wert 3 aktualisiert, wird der Auslöser durch Übergeben der Jobs aufgerufen, die die gespeicherten Prozeduren für die Datenaggregation aufrufen.

Für OneDB: Dies ist ab Version 12.1.0.3 anwendbar.

Erstellen Sie den Datenbanktrigger TR_AGGREGATE_DELTA_PATTERNS zusammen mit der Speicherprozedur AGGREGATE_DELTA_PATTERNS.

Nur für OneDB, gespeicherte Prozedur erstellen

AGGREGATE_DELTA_PATTERNS

Dies ist ab Version 12.1.0.3 anwendbar.

Es aktualisiert die Tabelle UARI_PROCESSED_PATTERNS und erstellt drei Jobs, um die folgenden Unterspeicherprozeduren aufzurufen:

SP_POPULATE_PATTERN_MATCHALL,

SP_POPULATE_PATTERN_COUNTER

EXECUTE PROCEDURE SP_POPULATE_PATTERN_WC.

Für jeden Aufruf der Speicherprozedur werden zwei ph_task eingesetzt, um die Jobzustände zu blockieren und zu verfolgen. Eine ph_task vor dem invoke-Aufruf und eine ph_task nach Beendigung des invoke-Aufrufs.

ETL-Prozess

Bei der ersten Ausführung setzt der ETL-Prozess keine Werte in die entsprechende Muster-ID der Tabelle UARI_DELTA_PATTERNS ein, da alle Muster neu oder Deltamuster sind. Der Berichtsaggregationsprozess sammelt alle Muster-IDs der ETL-Tabellen und fügt sie in die Tabelle UARI_DELTA_PATTERNS ein.

Der ETL-Prozess ruft die Prozedur SP_AGGR_RUN_STATUS auf. Die Prozedur SP_AGGR_RUN_STATUS überprüft die Tabelle UARI_PATTERN_LOCK anhand der Job-ID auf laufende Jobs.

Wert für JobID Grund
Y Der Job wird ausgeführt. Die Szenarios sind aktive oder fehlgeschlagene Jobs.
N Fehlgeschlagener Job.

Der ETL-Prozess überprüft immer den Status der Berichtsaggregation, indem der Status der übergebenen Jobs überprüft wird. Wenn der ETL-Prozess aktive Berichtsaggregationen findet, startet der ETL-Prozess seine Ausführung nicht. Der ETL-Prozess wird später nach Plan neu gestartet.

Der ETL-Prozess überprüft die Tabelle UARI_PATTERN_LOCK auf die Anzahl der Job-IDs mit dem Wert Y. Der ETL-Prozess startet nur, wenn keine Job-IDs den Wert Y haben. Sind Job-IDs mit dem Wert Y vorhanden, dann wird der ETL-Prozess übersprungen und im nächsten geplanten Intervall ausgeführt. Weitere Informationen zum ETL-Prozess finden Sie im Unica Interact-Administratorhandbuch.

Ab dem zweiten Lauf aufwärts aktualisiert der ETL-Prozess die Tabelle UARI_DELTA_PATTERNS mit dem Aktualisierungsflag für die aktualisierte Muster-ID (PatternID):

  • Für aktualisierte Daten wird PatternID mit U markiert.
  • Für gelöschte Daten wird PatternID mit D markiert.
  • Für neu hinzugefügte Daten wird PatternID mit dem Berichtsaggregationscode identifiziert und mit P markiert.

Der Aggregationsprozess wird nur für die mit dem Flag U oder D markierten Muster-IDs (PatternIDs) ausgeführt.

Aktivieren gespeicherter Prozeduren für Interact-Ereignismusterbericht

Zusätzlich zu den Schritten, die Sie zum Aktivieren von Berichten ausgeführt haben, müssen Sie den Interact-Ereignismusterbericht aktivieren. Der Interact-Ereignismusterbericht verwendet den Deltaaktualisierungsprozess für die Datenaggregation, damit Berichte schneller ausgegeben werden können.

Der Scheduler für Verwaltungsaufgabe (ATS = Administrative Aufgabe Scheduler) benötigt Tabellenbereich, um Protokoll- und Konfigurationsdaten speichern zu können. Um zu überprüfen, ob der Tabellenbereich in der Datenbank definiert ist, oder um den Tabellenbereich zu erstellen

Soll der geplante Job aus Aufgabe Scheduler ausgeführt werden, muss die Datenbank aktiv sein.

Bei ADMIN_TASK_STATUS handelt es sich um eine Verwaltungsansicht, die beim ersten Aufrufen der Prozedur ADMIN_TASK_ADD erstellt wird. Diese Ansichten müssen in der Datenbank vorhanden sein. Fehlen die Ansichten, wenden Sie sich an den zuständigen Datenbankadministrator, um mit ihm die Ansichten zu erstellen. Sie müssen Zugriffsberechtigung für die Verwaltungsansicht ADMIN_TASK_STATUS haben.

Führen Sie die folgenden Schritte aus, um gespeicherte Prozeduren für den Interact-Ereignismusterbericht zu aktivieren.

  1. Suchen Sie nach dem Ordner <Interact_Home>/reports/ddl/interact-ddl/<DB Type>/.
  2. Legen Sie für DB2 die folgenden Parameter fest:
    • db2set DB2_COMPATIBILITY_VECTOR=ORA
    • db2set DB2_ATS_ENABLE=YES
  3. Wenn die Instanz erneut gestartet wird, müssen Sie DB2 aktivieren, indem Sie die folgenden Befehle in der hier aufgeführten Reihenfolge ausführen:
    • db2 force application all - Stoppen der Anwendung auf dieser Instanz.
    • db2stop force - Stoppen von DB2.
    • db2start - Starten der Datenbank.
    • db2 activate db <dbname> – Explizites Aktivieren der Datenbank. Die folgende Nachricht erscheint: DB20000I Der Befehl ACTIVATE DATABASE wurde erfolgreich ausgeführt.
    • db2 list active databases - Überprüfen der Aktivierung der Datenbank. Es muss eine ähnliche Ausgabe angezeigt werden.
      Active Databases
      Database name = <dbname> Applications connected currently = 0
      Database path   = /data04/<DB instance
              owner>/NODE0000/SQL00001/
  4. Führen Sie in der ETL-Datenbank die folgenden Scripts in der aufgeführten Reihenfolge aus:
    • acir_tables_<DB Type>.sql
    • acir_scripts_<DB Type>.sql
    Anmerkung: Sie müssen das Script acir_tables_<DB Type>.sql ausführen, wenn es noch nicht ausgeführt wurde.
    Anmerkung: Wenn nach der Ausführung des Scripts acir_scripts_db2.sql in der Zieldatenbank eine Ausnahmebedingung ausgelöst wird, löschen Sie den Auslöser und erstellen Sie ihn mit dem richtigen Datenbankbenutzer.
    Führen Sie für SQL Server das Script acir_jobs_sqlserver.sql aus. Das Script erstellt Datenbankjobs für Grad 2. Informationen zum Ändern des Grads finden Sie unter „Ändern des Grades der parallelen Ausführung für den Interact-Ereignismusterbericht“.
    Anmerkung: Stellen Sie sicher, dass der Service für SQL Server Agent aktiv ist.
  5. Bevor der ETL-Prozess gestartet wird, müssen Sie in der Tabelle UARI_PATTERN_LOCK Sätze mit dem Grad der parallelen Batchausführung erstellen. Führen Sie einen der folgenden Befehle in der ETL-Datenbank aus, um diese Datensätze zu erstellen:
    • Für Oracle: execute SP_POPULATE_PATTERN_LOCK(2)
    • Bei DB2: call SP_POPULATE_PATTERN_LOCK(2)
    • Für SQL Server: EXEC [dbo].[SP_POPULATE_PATTERN_LOCK]

      @p_parallel_degree = 2

      Im vorliegenden Beispiel ist 2 der Grad der parallelen Ausführung der Aggregationsprozesse.

      Die Tabelle UARI_PATTERN_LOCK wird mit den gespeicherten Prozeduren mit dem Gradwert gefüllt. Der Gradwert ist konfigurierbar. Erhöhen Sie den Grad der parallelen Ausführung für den Aggregationsprozess des Interact-Ereignismusterberichts, um die Antwortzeit zu verringern. Wenn der Grad auf einen höheren Wert gesetzt wird, steigen auch die Anforderungen an die Hardwareressourcen proportional. Die Anzahl von Prozeduren, die für die Datenaggregation ausgeführt werden, hängt von dem Gradwert ab.
    • Für MariaDB:

      CALL SP_POPULATE_PATTERN_LOCK(1);

      Die parallele Ausführung ist für MariaDB nicht konfigurierbar und ihr Wert ist immer 1.

    • Für OneDB: CALL SP_POPULATE_PATTERN_LOCK(2);
  6. Optional: Während die ETL-Funktion ausgeführt wird, können Sie den Trigger inaktivieren, sodass die Berichtsaggregation nicht aufgerufen wird. Zum Deaktivieren des Auslösers und zum Deaktivieren des Berichtsaggregationsprozesses müssen Sie abhängig von Ihrem Datenbanktyp einen der folgenden Befehle ausführen.
    • Bei DB2: Sie können sich an den IBM Support wenden.
    • Für Oracle: alter trigger TR_AGGREGATE_DELTA_PATTERNS disable;
    • Für SQL Server: Disable Trigger TR_AGGREGATE_DELTA_PATTERNS on uaci_etlpatternstaterun
    • Für MariaDB: Standardmäßig ist der Trigger aktiviert. Er muss mit dem folgenden Befehl deaktiviert werden

      DROP TRIGGER IF EXISTS TR_AGGREGATE_DELTA_PATTERNS

    • Für OneDB: Standardmäßig ist der Trigger aktiviert. Er muss mit dem folgenden Befehl deaktiviert werden.

      DROP TRIGGER if exists TR_AGGREGATE_DELTA_PATTERNS;;

  7. Optional: Zum Aktivieren des Auslösers und zum Aktivieren des Berichtsaggregationsprozesses müssen Sie abhängig von Ihrem Datenbanktyp einen der folgenden Befehle ausführen.
    • Bei DB2: Sie können sich an den IBM Support wenden.
    • Für Oracle: alter trigger TR_AGGREGATE_DELTA_PATTERNS enable;
    • Für SQL Server: Enable Trigger TR_AGGREGATE_DELTA_PATTERNS on uaci_etlpatternstaterun;
    • Für MariaDB: Standardmäßig ist der Trigger aktiviert.

      Wenn er deaktiviert ist, kann er durch den Befehl zum Auslösen des Triggers aktiviert werden.

      Weitere Informationen hierzu finden Sie unter acir_scripts_mariadb.sql .

    • Für OneDB: Standardmäßig ist der Trigger aktiviert.

      Wenn er deaktiviert ist, kann er durch den Befehl zum Auslösen des Triggers aktiviert werden.

      Lesen Sie die acir_scripts_onedb.sql zusammen mit dem Befehl CREATE

      PROCEDURE AGGREGATE_DELTA_PATTERNS.
Anmerkung: Wenn die Ausführung von ETL erfolgreich abgeschlossen wurde, dann wird der Status in der Tabelle UACI_ETLPATTERNSTATERUN auf den Wert "3" aktualisiert und der Trigger TR_AGGREGATE_DELTA_PATTERNS wird aufgerufen. Der Trigger ruft die gespeicherte Prozedur für den festgelegten Grad der parallelen Ausführung auf. Wenn das System alle Daten zum ersten Mal aggregiert, dann kann der Berichtsaggregationsprozess möglicherweise länger als nachfolgende Aggregationen dauern.

Ändern des Grads der parallelen Ausführung für Interact-Ereignismusterbericht

Dieser Gradwert für die parallele Ausführung ist konfigurierbar. Erhöhen Sie den Grad der parallelen Ausführung für den Aggregationsprozess des Interact-Ereignismusterberichts, um die Antwortzeit zu verringern. Wenn der Grad auf einen höheren Wert gesetzt wird, steigen proportional auch die Anforderungen in Bezug auf die Hardwareressourcen.

Konfigurieren Sie den Grad, mit dem der Aggregationsprozess ausgeführt wird, damit der Interact-Ereignismusterbericht schneller ausgegeben werden kann.

Führen Sie abhängig von der verwendeten Datenbank einen der folgenden Schritte aus, um Datenbankjobs für einen Gradwert von "3" zu konfigurieren:
  • Für Oracle: Wenden Sie den folgenden Befehl auf die execute SP_POPULATE_PATTERN_LOCK(3)-ETL-Datenbank an:
  • Für IBM DB2: Run the call SP_POPULATE_PATTERN_LOCK(3) Befehl für die Interact-ETL-Datenbank.
  • Für SQL Server: Führen Sie das Script default acir_jobs_sqlserver.sql aus, um Datenbankjobs für den Gradwert 1 und 2 zu erstellen. Die Muster mit den Gradwerten 1 und 2 werden in der Tabelle UARI_PROCESSED_PATTERNS aggregiert.
  • Für MariaDB: Führen Sie das aus CALL SP_POPULATE_PATTERN_LOCK(1);

    Die parallele Ausführung ist für MariaDB nicht konfigurierbar und ihr Wert ist immer 1.

  • Für OneDB: Führen Sie das aus CALL SP_POPULATE_PATTERN_LOCK(2);
Wollen Sie den Grad für das Muster "Alle stimmen überein" (Match All Pattern) in 3 ändern, kopieren Sie den Beispielcode für Grad 1 und führen Sie die folgenden Schritte aus:
  1. Legen Sie für @job_name den Wert JOB_MA_3 fest.
  2. Legen Sie für @p_parallel_degree den Wert 3 fest.
Wenden Sie den folgenden Befehl auf die Interact-ETL-Datenbank an.
DECLARE
@jobId BINARY(16),
@status int,
@schedule_name varchar(16), @dbname varchar(100)
set @dbname= (SELECT DB_NAME());

EXEC msdb.dbo.sp_add_job @job_name=N’JOB_MA_3’, @job_id = @jobId OUTPUT;

EXEC msdb.dbo.sp_add_jobstep @job_id=@jobId, @step_name=N’first’, @command=N’EXEC [dbo].[SP_POPULATE_PATTERN_MATCHALL]
@p_parallel_degree = 3’, @database_name=@dbname;

EXEC msdb.dbo.sp_add_jobserver @job_id=@jobId, @server_name=N’(local)’;
GO

Sie können den Grad für das Muster "Zähler" (Counter Pattern) und "Gewichteter Zähler" (Weighted Counter Pattern) erstellen und die Befehle für die ETL-Datenbank ausführen.

Wollen Sie den Grad für das Muster "Zähler" (Counter Pattern) in 3 ändern, kopieren Sie den Beispielcode für Grad 1 und führen Sie die folgenden Schritte aus:
  1. Legen Sie für @job_name den Wert JOB_C_3 fest.
  2. Legen Sie für @p_parallel_degree den Wert 3 fest.
Wollen Sie den Grad für das Muster "Gewichteter Zähler" (Weighted Counter Pattern) in 3 ändern, kopieren Sie den Beispielcode für Grad 1 und führen Sie die folgenden Schritte aus:
  1. Legen Sie für @job_name den Wert JOB_WC_3 fest.
  2. Legen Sie für @p_parallel_degree den Wert 3 fest.

Protokollnachrichten in Tabelle UARI_DELTA_REFRESH_LOG für den Interact-Ereignismusterbericht

Die Tabelle UARI_DELTA_REFRESH_LOG enthält die Protokollinformationen für alle Prozeduren.

Aggregationsprozessstatus

Um den Status des Aggregationsprozesses zu überprüfen, müssen Sie den folgenden Text suchen: MESSAGE_LINE:
<patterntype> patterns delta
        refresh started for parallel degree <degree value>
<patterntype> patterns delta refresh completed for parallel degree <degree
    value>
Dabei gilt Folgendes:
  • <patterntype> steht für „Alle abgleichen“, „Zähler“ oder „Gewichteter Zähler“.
  • <degree value> ist der Wert, mit dem Muster parallel verarbeitet werden. Wenn der Gradwert beispielsweise "2" lautet, dann werden die folgenden Nachrichten protokolliert:
MatchAll patterns delta refresh started for parallel degree 
MatchAll patterns delta refresh completed for parallel degree
MatchAll patterns delta refresh started for parallel degree 
MatchAll patterns delta refresh completed for parallel degree 2

Tabelle UARI_PATTERNSTATE_INFO

Um zu überprüfen, ob die Tabelle UARI_PATTERNSTATE_INFO aktualisiert wird, suchen Sie den folgenden Text:

MESSAGE_LINE:

Pattern State information refresh procedure started
--The procedure to refresh the data in UARI_PATTERNSTATE_INFO is running.

MESSAGE_LINE:

Pattern State information refresh procedure completed
--The procedure to refresh the data in UARI_PATTERNSTATE_INFO is completed.

Mit Prozedur SP_AGGR_RUN_STATUS zurückgesetzte Sperrflags

Um zu überprüfen, ob die Sperrflags mit der Prozedur SP_AGGR_RUN_STATUS zurückgesetzt werden, müssen Sie den folgenden Text suchen:

MESSAGE_LINE:

patterns lock has been reset for parallel degree <degree value>

Die Spalte OBJECT der Tabelle UARI_DELTA_REFRESH_LOG enthält den Namen der Prozedur, für die die Sperre zurückgesetzt wird.

Dabei gilt Folgendes: <degree value> ist der Wert, mit dem Muster parallel verarbeitet werden. Wenn der Gradwert beispielsweise "1" lautet, dann wird die folgende Nachricht protokolliert:

patterns lock has been reset for parallel degree 1

Nur für DB2: Erneutes Binden von Paketen

Nur für DB2: Um zu überprüfen, ob das erneute Binden der Pakete abgeschlossen ist, müssen Sie nach dem folgenden Text suchen:

MESSAGE_LINE:

Rebind of packages started
--Rebinding of the packages started

MESSAGE_LINE:

Rebinding of packages completed successfully on <datetime>
--Rebinding of the packages completed successfully on the given date.

In ETL-Tabellen aktualisierte Statistiken

Um zu überprüfen, ob die Statistiken in den ETL-Tabellen aktualisiert wurden, suchen Sie nach dem folgenden Text:

MESSAGE_LINE:

Table statistics update
        started
--Update statistics on the ETL
        tables is in process

MESSAGE_LINE:

Statistics on Tables
        UACI_ETLPATTERNSTATE UACI_ETLPATTERNSTATEITEM
UACI_ETLPATTERNEVENTINFO and
        indexes have been updated successfully on <datetime>
--Statistics are updated on the
        mentioned ETL tables on the given date.

Grad der parallelen Ausführung

Um den Grad der parallelen Ausführung zu überprüfen, suchen Sie nach dem folgenden Text:

MESSAGE_LINE:
Pattern aggregation processing Parallel degree is set to <degree value>
--Parallel degree with which report aggregation will run is set to <degree value>.

Wenn der Gradwert beispielsweise "2" lautet, dann wird die folgende Nachricht protokolliert:

Pattern aggregation processing Parallel degree is set to 2.