Benutzer-Werkzeuge

Webseiten-Werkzeuge


engine:procedures:st_updatestatistics_ad

st_UpdateStatistics_Ad

Prozedur, um die in „DSS_StatisticData“ angefallenen Statistiken in die Tabellen für Tages-, Wochen- und Monats-Statistiken zusammenzufassen.

Anmerkung zum Parameter „onlyBillsAndOrders“ :
Dieser Parameter bezieht sich auf die Statistiken zu den Basis-Kennzahlen „4“ bis „6“, die derzeit in Echtzeit gepflegt werden. Bei der Aktualisierung der Wochen- und Monats-Statistiken werden immer die Statistiken zu ALLEN Kennzahlen berücksichtigt, lediglich bei den Tages-Statistiken gibt dieser Parameter die Möglichkeit, NUR die genannten Kennzahlen zu aktualisieren. Der Name rührt übrigens daher, daß im „dStore“ bereits Tabellen zur Verwaltung von Rechnungen (zu Aufträgen) existieren („Bills“, „BillContent“, „BillSurcharges“, „BillContentSurcharges“) - allerdings sind diese derzeit ungenutzt und es werden daher auch keine entsprechenden Statistiken zu den Basis-Kennzahlen „7“ bis „9“ gepflegt.

Wichtige allgemeine Hinweise :
1. Um die Tages-Statistiken erstellen zu können, müssen für den Tag (→ „Date“) alle Daten in „DSS_StatisticData“ vorhanden sein - die Prozedur überprüft dies anhand des „Settings“-Eintrags zum Schlüssel „MaxDaysInDSS_StatisticData“.
2. Da die Wochen- bzw Monats-Statistiken auf Basis der Tages-Statistiken erstellt werden, wird analog überprüft, ob alle Daten für die/den zu aktualisierende(n) Woche/Monat in „TreeNodeCharacteristicNos_PD“ bzw. „PersonCharacteristicNos_PD“ vorhanden sind. Hierzu wird die Konfiguration in der Tabelle „PeriodsToKeepStatistics“ herangezogen (siehe st_ModifyPeriodsToKeepStats_Ad).

Wichtige Hinweise zum Parameter „UseIncrementalUpdateForPM“ :

1. Eine inkrementelle Aktualisierung wird von der internen Prozedur „_st_UpdatePMStatistics_Incr“ durchgeführt (die daher auch beim erstmaligen Aufruf automatisch in „BatchJobs“ registriert wird). Im Unterschied zur kompletten Aktualisierung eines Monats (durch die interne Prozedur „_st_UpdatePMStatistics“) werden die Daten des Monats nicht komplett gelöscht und die Statistiken für den gesamten Monat dann neu aufaddiert, sondern es werden nur die Daten des vorherigen Tages (vom Zeitpunkt des Aufrufs dieser Prozedur aus gesehen) herangezogen und zum entsprechenden Monat „hinzuaddiert“ - dies ist natürlich ein erheblicher Performance-Gewinn, insbesondere gegen Ende eines Monats (da die Datenmenge immer größer wird).

2. Der Parameter „UseIncrementalUpdateForPM“ sollte aus Performance-Gründen (siehe 1.) immer auf „1“ gesetzt werden, da die Prozedur selbst erkennt, ob eine inkrementelle Aktualisierung überhaupt möglich ist und gegebenenfalls der Monat doch komplett aktualisiert werden muß (was dann auch durchgeführt wird). Vor dem erstmaligen Aufruf (mit „UseIncrementalUpdateForPM = 1“) sollte allerdings am Tag zuvor einmal der entsprechende Monat komplett aktualisiert werden (also Aufruf mit „UseIncrementalUpdateForPM = 0“), damit der erste Monat garantiert vollständige Statistiken enthält !

3. Voraussetzung für eine inkrementelle Aktualisierung ist, daß die Prozedur „_st_UpdatePMStatistics_Incr“ am gestrigen Tag gelaufen ist (das wird anhand von „BatchJobs“ geprüft); d.h. eine inkrementelle Aktualisierung funktioniert nur für den aktuellen Tag ! Somit wird verhindert, daß „_st_UpdatePMStatistics_Incr“ mehrfach an einem Tag ausgeführt wird oder ein oder mehrere Tag(e) des Monats fehlen.

4. Schlägt die inkrementelle Aktualisierung fehl, wird der entsprechende Error-Code in „BatchJobs“ eingetragen und die Prozedur gibt zusätzlich eine Meldung der Art „Inkrementelle Auswertung schlug fehl“ an die Standard-Ausgabe. Nach dieser Meldung sollte eine weitere Ausgabe der Art „Versuche den Monat komplett zu aktualisieren…“ kommen, was bedeutet, daß automatisch die interne Prozedur „_st_UpdatePMStatistics“ aufgerufen wird. „_st_UpdatePMStatistics“ setzt nach erfolgreichem Lauf automatisch den Eintrag in „BatchJobs“ für „_st_UpdatePMStatistics_Incr“ so um, daß diese am nächsten Tag wieder angestoßen werden kann…

5. ACHTUNG : Wird nach einem Fehler in der inkrementellen Auswertung die Prozedur „_st_UpdatePMStatistics“ nicht automatisch aufgerufen oder gibt diese einen Fehler aus, muß st_UpdateStatistics_Ad auf jeden Fall erneut aufgerufen werden (mit „UseIncrementalUpdateForPM = 0“), bis die Statistiken für den Monat wieder komplett sind, da sonst am nächsten Tag die inkrementelle Auswertung automatisch wieder gestartet wird (was dann zu fehlerhaften Daten in den Monats-Statistiken führt, da ja ein Tag fehlt). Der Error-Code von „_st_UpdatePMStatistics_Incr“ in „BatchJobs“ wird nämlich beim Start der Prozedur nicht überprüft, sondern nur, ob die Prozedur am gestrigen Tag gelaufen ist. Hintergrund für dieses Vorgehen ist, daß davon ausgegangen wird, daß bei einem Fehler sowieso „_st_UpdatePMStatistics“ ausgeführt wird, die den Status von „_st_UpdatePMStatistics_Incr“ ja wieder zurücksetzt (siehe 4.). Somit kann der „dStore“ bestimmte Fehler selbst korrigieren, ohne daß ein administrativer Eingriff erforderlich ist. Ein Abbruch der inkrementellen Auswertung OHNE darauffolgenden Start der kompletten Aktualisierung kommt nur bei Fehlern vor, die nicht abgefangen werden können - wie „deadlocks“ oder Konvertierungs-Fehler. In diesem Fall ist immer ein manueller Eingriff (mindestens das Zurücksetzen von Status in „BatchJobs“) erforderlich.

HTTP-MethodPOST
HTTP-AuthOptional
Tags
Engine-Kategoriesystem administration
Engine-TypDaten-Änderung
Letzte Aktualisierung7.0.7 (2015-01-29)

Parameter

Name 1) Standard-Wert Beschreibung 2) SQL-Datentyp3) ab Version
Date Tages-Datum („NULL“ für gestern), für das die Statistiken aktualisiert werden sollen. Bei der Aktualisierung der Wochen-Statistiken wird die Woche aktualisiert, auf die der Tag fällt - analoges gilt für die Monats-Statistiken.
datetime3.5.0
UpdatePDStatistics1 Auf „1“ setzen, um die Tages-Statistiken („TreeNodeCharacteristicNos_PD“, „PersonCharacteristicNos_PD“ und „DailyCharacteristicNos_PH“) zu aktualisieren
bit3.5.0
UpdatePWStatistics1 Auf „1“ setzen, um die Wochen-Statistiken („TreeNodeCharacteristicNos_PW“) zu aktualisieren
bit3.5.0
UpdatePMStatistics1 Auf „1“ setzen, um die Monats-Statistiken („TreeNodeCharacteristicNos_PM“ und „PersonCharacteristicNos_PM“) zu aktualisieren
bit3.5.0
onlyBillsAndOrders0 Bezieht sich nur auf die Tages-Statistiken ! „1“ angeben, um nur die Statistiken zu den Basis-Kennzahlen „4“ bis „6“ zu aktualisieren (siehe Beschreibung).
bit3.5.0
UseIncrementalUpdateForPM0 Entscheidet darüber, welche interne Prozedur für die Aktualisierung der Monats-Statistiken verwendet wird („1“ : „_st_UpdatePMStatistics_Incr“, „0“ : „_st_UpdatePMStatistics“) - siehe Beschreibung
bit3.5.0

Rückgabe

Die Prozedur hat keine Rückgaben.

Output-Parameter

Die Prozedur hat keine Output-Parameter.

Mögliche Return-Codes

Code Beschreibung Quelle 4)
-621Fehlender oder falscher Eintrag in PersonTypeSettingsnur indirekt
-599Lizenz ist ungültig oder abgelaufennur indirekt
-569Der Benutzer hat kein Ausführungsrecht für die Prozedurnur indirekt
-567Die Prozedur darf z. Zt. nicht ausgeführt werdennur indirekt
-566Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werdennur indirekt
-565Die „Objekt-ID“ der Prozedur konnte nicht ermittelt werdennur indirekt
-564Der Status in BatchJobs konnte nicht gesetzt werdennur indirekt
-562Die Prozedur ist nicht in BatchJobs registriertnur indirekt
-560Prozedur konnte nicht gestartet werdennur indirekt
-550Fehlender oder falscher Eintrag in Settingsnur indirekt
-535Das Datum liegt nicht in der Vergangenheitnur indirekt
-530Der Wert ist nicht konvertierbarnur indirekt
-510Der Benutzer ist nicht registriertnur indirekt
-504Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochennur indirekt
-500Falsche Parameternur indirekt
-410Für den Zeitraum der Auswertung sind nicht mehr alle Daten vorhandennur indirekt

XML-Schema

Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.

Historie

7.0.7 2015-01-29Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf]
7.0.4 2014-03-191. Ab jetzt kann „NULL“ für „Date“ übergeben werden, was „gestern“ bedeutet
2. Anpassungen an den aktuellen Quellcode-Standard, daher sind u.a. die „print“-Ausgaben nun auf Englisch
4.0.15 2004-07-301. Aufruf der Prozeduren „_mi_StartProcedure“ und „_mi_FinishProcedure“
2. Ausführen von „set transaction isolation level 1“ und „set rowcount 0“ zu Beginn der Prozedur
3.5.0 2000-11-23Erstmalig in dieser Version erstellt

Code-Snippets

Engine Playground

Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:

cURL

Unformatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/st_UpdateStatistics_Ad?Date=<value>'

Mit xmllint 5) formatierte Ausgabe:

curl -X POST  'http://<partner>-<project>.dstore.de/default/engine/st_UpdateStatistics_Ad?Date=<value>' | xmllint --format -
dStore_php
use dStore_php\WebService;
 
$service = new WebService\Service( WebService\Scheme::HTTP,'<partner>-<project>.dstore.de', 80);
 
$request = new WebService\Requests\Engine\Procedure\Request(
			new WebService\Requests\AccessData('default'),
	'st_UpdateStatistics_Ad',
		array(
			'Date' => <value>,
			// 'UpdatePDStatistics' => 1,
			// 'UpdatePWStatistics' => 1,
			// 'UpdatePMStatistics' => 1,
			// 'onlyBillsAndOrders' => 0,
			// 'UseIncrementalUpdateForPM' => 0
		)
);
 
$service->execute($request);
 
			$xml_result = $request->getResponse()->getBody()->toSimpleXmlDocument();
			$ResultSet = $xml_result->getRowsAsArray();
engine/execute

XML zur Ausführung mit der Methode engine/execute, z.B. per

curl --header 'Content-Type: application/xml' -X POST 'http://<partner>-<kunde>.dstore.de/default/engine/execute' -d '<xml-daten>'
<?xml version="1.0" encoding="UTF-8"?>
<ListOfBatches>
	<Batch No="0">
		<Procedure Name="st_UpdateStatistics_Ad">
			<Parameters>
				<Parameter Name="Date"><!-- datetime value --></Parameter>
				<!-- <Parameter Name="UpdatePDStatistics">1</Parameter> -->
				<!-- <Parameter Name="UpdatePWStatistics">1</Parameter> -->
				<!-- <Parameter Name="UpdatePMStatistics">1</Parameter> -->
				<!-- <Parameter Name="onlyBillsAndOrders">0</Parameter> -->
				<!-- <Parameter Name="UseIncrementalUpdateForPM">0</Parameter> -->
			</Parameters>
		</Procedure>
	</Batch>
</ListOfBatches>
1)
Pflichtparameter sind unterstrichen
4)
direkt meint „von der Prozedur selber“ und indirekt meint „von intern aufgerufenen Unterprozeduren“
5)
I.d.R. auf Unix-artigen Systemen bereits installiert, Bestandteil der libxml2, siehe http://www.xmlsoft.org
engine/procedures/st_updatestatistics_ad.txt · Zuletzt geändert: 11.01.2016 (Externe Bearbeitung)