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-Method | POST |
HTTP-Auth | Optional |
Tags | |
Engine-Kategorie | system administration |
Engine-Typ | Daten-Änderung |
Letzte Aktualisierung | 7.0.7 (2015-01-29) |
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. | datetime | 3.5.0 | |
UpdatePDStatistics | 1 | Auf „1“ setzen, um die Tages-Statistiken („TreeNodeCharacteristicNos_PD“, „PersonCharacteristicNos_PD“ und „DailyCharacteristicNos_PH“) zu aktualisieren | bit | 3.5.0 |
UpdatePWStatistics | 1 | Auf „1“ setzen, um die Wochen-Statistiken („TreeNodeCharacteristicNos_PW“) zu aktualisieren | bit | 3.5.0 |
UpdatePMStatistics | 1 | Auf „1“ setzen, um die Monats-Statistiken („TreeNodeCharacteristicNos_PM“ und „PersonCharacteristicNos_PM“) zu aktualisieren | bit | 3.5.0 |
onlyBillsAndOrders | 0 | Bezieht sich nur auf die Tages-Statistiken ! „1“ angeben, um nur die Statistiken zu den Basis-Kennzahlen „4“ bis „6“ zu aktualisieren (siehe Beschreibung). | bit | 3.5.0 |
UseIncrementalUpdateForPM | 0 | Entscheidet darüber, welche interne Prozedur für die Aktualisierung der Monats-Statistiken verwendet wird („1“ : „_st_UpdatePMStatistics_Incr“, „0“ : „_st_UpdatePMStatistics“) - siehe Beschreibung | bit | 3.5.0 |
Die Prozedur hat keine Rückgaben.
Die Prozedur hat keine Output-Parameter.
Code | Beschreibung | Quelle 4) |
---|---|---|
-621 | Fehlender oder falscher Eintrag in PersonTypeSettings | nur indirekt |
-599 | Lizenz ist ungültig oder abgelaufen | nur indirekt |
-569 | Der Benutzer hat kein Ausführungsrecht für die Prozedur | nur indirekt |
-567 | Die Prozedur darf z. Zt. nicht ausgeführt werden | nur indirekt |
-566 | Die Prozedur darf mit den übergebenen Parametern nicht ausgeführt werden | nur indirekt |
-565 | Die „Objekt-ID“ der Prozedur konnte nicht ermittelt werden | nur indirekt |
-564 | Der Status in BatchJobs konnte nicht gesetzt werden | nur indirekt |
-562 | Die Prozedur ist nicht in BatchJobs registriert | nur indirekt |
-560 | Prozedur konnte nicht gestartet werden | nur indirekt |
-550 | Fehlender oder falscher Eintrag in Settings | nur indirekt |
-535 | Das Datum liegt nicht in der Vergangenheit | nur indirekt |
-530 | Der Wert ist nicht konvertierbar | nur indirekt |
-510 | Der Benutzer ist nicht registriert | nur indirekt |
-504 | Es ist ein Problem aufgetreten, das nicht gelöst werden kann, Prozedur wird daher abgebrochen | nur indirekt |
-500 | Falsche Parameter | nur indirekt |
-410 | Für den Zeitraum der Auswertung sind nicht mehr alle Daten vorhanden | nur indirekt |
Die Rückgabe erfolgt als XML-Dokument welches gegen das Schema Response/EngineProcedure_v1_0.xsd validiert.
7.0.7 | 2015-01-29 | Interne Änderung : Datentyp-Erweiterung des „ReferenceKey“ [für „_mi_StartProcedure“-Aufruf] |
7.0.4 | 2014-03-19 | 1. 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-30 | 1. 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-23 | Erstmalig in dieser Version erstellt |
Der folgende Link öffnet in einem separaten Fenster den Engine Playground der fest mit dem dbap-demo System verbunden ist:
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 -
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();
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>