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:
- Der Interact-ETL-Prozess wandelt die BLOB-Daten der Zielgruppe in ETL-Datenbanktabellen um.
- 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 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:
|
SP_POPULATE_PATTERN_LOCK
|
Aktualisiert die Tabelle UARI_PATTERN_LOCK mit dem konfigurierten Grad der parallelen Ausführung.
Für Maria DB werden die Jobs nicht unterstützt und die gespeicherten Prozeduren werden sequenziell ausgeführt.
|
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 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 |
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.
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.
- Suchen Sie nach dem Ordner
<Interact_Home>/reports/ddl/interact-ddl/<DB Type>/
. - Legen Sie für DB2 die folgenden Parameter fest:
db2set DB2_COMPATIBILITY_VECTOR=ORA
db2set DB2_ATS_ENABLE=YES
- 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/
- 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 Scriptacir_tables_<DB Type>.sql
ausführen, wenn es noch nicht ausgeführt wurde.Anmerkung: Wenn nach der Ausführung des Scriptsacir_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 Scriptacir_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. - 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);
- 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;
;
- 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 CREATEPROCEDURE AGGREGATE_DELTA_PATTERNS
.
Ä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);
- Legen Sie für @job_name den Wert JOB_MA_3 fest.
- Legen Sie für @p_parallel_degree den Wert 3 fest.
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:- Legen Sie für @job_name den Wert JOB_C_3 fest.
- Legen Sie für @p_parallel_degree den Wert 3 fest.
- Legen Sie für @job_name den Wert JOB_WC_3 fest.
- 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
<patterntype> patterns delta
refresh started for parallel degree <degree value>
<patterntype> patterns delta refresh completed for parallel degree <degree
value>
<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:
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
.