Logo.CortexAG

Anmelden +

Pivotserver-Funktionen

Bei dem Pivotserver handelt es sich um eine Erweiterung des Datenbankservers. Für die Anwendungen im "Big Data" Bereich werden Transaktionsdaten in einem separaten CortexDB-Server aggregiert und können über den DataService abgefragt werden. Dieses Verfahren wird genutzt, wenn Live-Abfrage nicht mehr sinnvoll nutzbar sind. Beispielsweise können über mehrere Milliarden Datensätzen Durchschnittswerte je spezifischer Zeitspanne errechnet und nach beliebigen Kriterien gefiltert werden.

Die Konfiguration eines Pivotservers kann über den DataService abgefragt werden. Hierfür ist ein Login über den DataService notwendig, um ein "Userhandle" zu erhalten. Danach können die weiteren Funktionen mit den entsprechenden Parametern genutzt werden. Alle Funktionen können auch unabhängig voneinander genutzt werden, wenn die entsprechenden Paramter (z.B. IDs) bekannt sind.

 

Folgende Funktionen des Pivotservers stehen zur Verfügung:

  • getPivotSrvConfig - liefert die Pivot-Konfigurationen des Servers
  • getPivotSrvFilter - liefert die Filtermöglichkeiten zu einer Konfiguration
  • getPivotSrvData - liefert das Pivotergebnis zu einem Filter einer Konfiguration
  • insertPivotSrvUserFilter - Speichert die Filterkombination zu dem Benutzer
  • getPivotSrvUserFilterList - Liefert eine Liste aller gespeicherten Filter des Benutzers
  • getPivotSrvUserFilter - Lädt eine spezifische Filterkombination des Benutzers

 

 

getPivotSrvConfig

Diese Funktion liest die Konfiguration des Pivotservers aus. Zu den Namen und IDs der einzelnen Konfigurationsabschnitte werden die zur Verfügung stehenden Pivotkonfigurationen zurückgeliefert. Mit der eindeutigen ID können im weiteren Verlauf die Filtermöglichkeiten abgefragt werden.

 

Anfrageobjekt

{
  "method": "getPivotSrvConfig",
  "requestid": ___id___,
  "param": {
    "UpdJsrHdl": "___userhandle___"
  }
}

 

Rückgabeobjekt

{
  "requesterror": 0,
  "requestid": ___id___,
  "requestmethod": "getPivotSrvConfig",
  "requestduration": 0.1272,
  "result": {
    "rc": 0,
    "error": "",
    "data": {
      "parts": [
        {
          "n": "__name first part__", // name of part
          "pid": 90, // i.e. used as param in getPivotSrvFilter
          "pivot": [
            {
              "id": 1, // id of pivot in this part
              "n": "__pivotname__" // name of pivot
            }
          ]
        },
        {
          "n": "__name second part__",
          "pid": 10,
          "pivot": [
            {
              "id": 1,
              "n": "__pivotname__"
            },
            {...}
          ]
        },
        {...}
      ],
      "userconfig": {...}, // saved user config from application as object
      "DataStatusDate": "20170316",
      "DataStatusUpdate": 1
    }
  }
}

 

 

getPivotSrvFilter

Um die Ausgabe einzuschränken, werden Anwendern Filtermöglichkeiten vorgegeben. Diese Funktion liest die entsprechenden Konfigurationen zu der eindeutigen ID der o.g. Rückgabe aus.

Hinweis: Der "Filter" im "data"-Teil des Rückgabeobjektes liefert möglicherweise das Element "strictcount" aus. Dieser definiert die genaue Anzahl der zu setzenden Optionen. Beim Setzen des Filters ist es also notwendig, diese Angabe zu beachten, da ansonsten eine entsprechende Hinweismeldung erfolgt ("pivotserver filter strictcount mismatch"). Dieses kann beispielsweise der Fall sein, wenn ein Vergleich von zwei oder mehr Jahren ermöglicht werden soll. Die Auswahl von nur einem Jahr würde kein oder ein sinnloses Ergebnis liefern.

 

Anfrageobjekt

{
  "method": "getPivotSrvFilter",
  "requestid": ___id___,
  "param": {
    "part": "90", // pid of getPivotSrvConfig
    "UpdJsrHdl": "___userhandle___"
  }
}

 

Rückgabeobjekt

Innerhalb des Rückgabeobjektes können "child" und "parent" Elemente zurückgeliefert werden. Über diese Verkettung werden hierarchisch zusammengehörende Strukturen abgebildet. Beispielsweise gehören zu "Regionen" einzelne "Bezirke" zu denen einzelne "Händler" gehören.

Die zurückgelieferten Elemente unterhalb eines Filters werden im späteren Verlauf mit der Funktion "getPivotSrvData" genutzt (siehe dort).

{
  "requesterror": 0,
  "requestid": 15,
  "requestmethod": "getPivotSrvFilter",
  "requestduration": 0.1018,
  "result": {
    "rc": 0,
    "error": "",
    "data": {
      "part_id": 90,
      "filter": [
        {
          "title": "Year",
          "id": "f90z0",
          "strictcount": 2, // exact number of options to be set
          "elem": [
            {
              "e": "2013"
            },
            {
              "e": "2014"
            },
            {
              "e": "2015"
            },
            {
              "e": "2016"
            }
],
          "struct": {...}
        },
        {
          "title": "Month",
          "id": "f90z1",
          "strictcount": 1,
          "elem": [
            {
              "e": "01",
              "l": "Januar",
              "h": "Jan"
            },
            {
              "e": "02",
              "l": "Februar",
              "h": "Feb"
            },
            {...}
]
        },
        {
          "title": "Region",
          "id": "f90z3",
          "struct_child": "f90z4", // child of this element
          "elem": [...],
          "struct": {...}
        },
        {
          "title": "County",
          "id": "f90z4",
          "struct_parent": "f90z3", // parent of this element
          "struct_child": "f90z5",
          "elem": [...],
          "struct": {...}
        },
        {
          "title": "Retailer",
          "id": "f90z5",
          "struct_parent": "f90z4",
          "elem": [...]
        }
      ],
      "time_filter": 0.06
    }
  }
}

 

 

getPivotSrvData

Um einen Filter auszuführen, muss die entsprechende ID des Filters mit einem oder mehreren der zur Verfügung stehenden Element übergeben werden.

 

Anfrageobjekt

In dem hier gezeigten Beispiel werden die Filter mit der ID "f90z0" und "f90z1" genutzt und mit den entsprechenden Elementen abgefragt (Jahre und Monate). Diese wurden durch die o.g. Funktion "getPivotSrvFilter" zurückgeliefert.

{
  "method": "getPivotSrvData",
  "requestid": ___id___,
  "param": {
    "part": "90",
    "pivot": "1",
    "filter": {
      "f90z0": [ // id of filter from getPivotSrvFilter
        "2016", // element of filter
        "2015"
      ],
      "f90z1": [
        "01"
      ]
    },
    "UpdJsrHdl": "___userhandle___"
  }
}

 

Rückgabeobjekt

Die Rückgabe liefert neben einer Vielzahl von Metainformationen (Angaben zur Dauer der Abfragegeschwindigkeit und Rücklieferung) die genauen Filterdefinitionen ("select") und die kompelette Ausgabe des Pivotergebnisses.

{
  "requesterror": 0,
  "requestid": 26,
  "requestmethod": "getPivotSrvData",
  "requestduration": 1.1801,
  "result": {
    "rc": 0,
    "error": "",
    "data": {
      "part_id": 90,
      "pivot_id": 1,
      "i": [
        {
          "filter_grid": "p35",
          "filter_time": 0.023,
          "select_time": 0.061,
          "select_count": 11837,
          "data_grid": "p35",
          "listdatasrv_time": 0.41,
          "listdata_time": 0.653,
          "pivotcalc_time": 0.131,
          "pivot_time": 0.784,
          "total_time": 0.868,
          "select": [
            {
              "m": "+",
              "t": "l",
              "w": "!",
              "f": "35z1",
              "v": [
                "201501",
                "201601"
              ],
              "_f_": "z1",
              "_vk_": 21153,
              "_ec_": 2,
              "_vkcount_": 21153,
              "_ecount_": 2,
              "_ivkcount_": 416007,
              "_iecount_": 43
            },
            {
              "m": "-",
              "t": "l",
              "w": "!",
              "f": "35z12",
              "v": [
                " ( leer )"
              ],
              "_f_": "z12",
              "_vk_": 2015,
              "_ec_": 1,
              "_vkcount_": 435145,
              "_ecount_": 559,
              "_ivkcount_": 2015,
              "_iecount_": 1
            },
            {
              "m": "-",
              "t": "l",
              "w": "!",
              "f": "35z17",
              "v": [
                "1"
              ],
              "_f_": "z17",
              "_vk_": 191813,
              "_ec_": 1,
              "_vkcount_": 245347,
              "_ecount_": 1,
              "_ivkcount_": 191813,
              "_iecount_": 1
            }
          ]
        }
      ],
      "pivot": [
        {
          "c": {
            "fields": [
              {
                "f": "Sales channel",
                "h": "Sales channel",
                "did": "zf0",
                "typ": "zf",
                "ldef": {
                  "b": "0",
                  "h": "Sales channel",
                  "l": 220,
                  "s": "35z2",
                  "t": "C",
                  "w": "0",
                  "x": 0,
                  "did": "l0d1"
                },
                "g": ""
              },
              {...}
            ],
            "dfields": [
              {
                "f": "UPE in €",
                "h": "UPE in €",
                "a": "sum",
                "did": "df0", // see "d" -> "!c" -> "df0"
                "typ": "df",
                "ldef": {
                  "b": "0",
                  "h": "UPE in €",
                  "l": 2,
                  "s": "35d0r",
                  "t": "F",
                  "w": "0",
                  "x": 0,
                  "did": "l0d3"
                },
                "g": ""
              }
            ]
          },
          "d": [
            {
              "zf0": "my company",
              "!c": [
                {
                  "zf1": "2015",
                  "df0": 55792857.890000045, // type and name of this fields
                  "df1": 37731644.26481257, // in "dfields" -> "did"
                  "df2": 55211054.62852001,
                  "df3": 56838429.46399998,
                  "zf0": "Eigene Werkstatt",
                  "sortpos": 0
                },
                {
                  "zf1": "2016",
                  "df0": 53099444.99,
                  "df1": 35185217.651030675,
                  "df2": 52896010.793290004,
                  "df3": 54657159.06900002,
                  "zf0": "Eigene Werkstatt",
                  "sortpos": 0
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

 

 

insertPivotSrvUserFilter

Die gesetzte Filterkombination kann für eine erneute Verwendung unter dem Kontext des Benutzers gespeichert werden. Hierfür ist die Vergabe eines Titels notwendig, die dem Benutzer für eine spätere Anzeige angezeigt wird (wie der Name für Dateien).

 

Anfrageobjekt

Das Anfrageobjekt erfodert folgende Parameter:

  • die Angabe der ID für eine Konfiguration (wird mit "getPivotSrvConfig" geliefert)
  • die Angabe der ID für die Pivot innerhalb der Konfiguration
  • die Angabe des Fitlers, der gespeichert werden soll
  • den Titel für den Filter zum erneuten Laden
  • (optional) eine Beschreibung
  • (optional) ob es sich um den Standard-(default-) Filter handelt

 

{
  "method": "insertPivotSrvUserFilter",
  "requestid": ___id___,
  "param": {
    "part": "90", // id of part from getPivotSrvConfig
    "pivot": "1", // id of pivot in part
    "filter": { // filter
      "f90z0": [
        "2013",
        "2014"
      ],
      "f90z1": [
        "01"
      ]
    },
    "title": "myTitleForMyFilter", // Title for the filter
    "descr": "myDescription", // description for the filter
    "default": 0,
    "UpdJsrHdl": "___userhandle___"
  }
}

 

Rückgabeobjekt

Die Rückgabe liefert die eindeutige IID des gespeicherten Filters mit den zuvor übergebenen Parametern. Mit Hilfe dieser IID kann der Filter geladen werden.

 {
  "requesterror": 0,
  "requestid": 4,
  "requestmethod": "insertPivotSrvUserFilter",
  "requestduration": 0.0837,
  "result": {
    "rc": 0,
    "error": "",
    "data": {
      "userfilter": {
        "iid": "20762a85bb20202020212024",
        "title": "myTitleForMyFilter",
        "descr": "myDescription",
        "default": 0,
        "part_id": 90,
        "pivot_id": 1,
        "filter": {
          "f90z0": [
            "2013",
            "2014"
          ],
          "f90z1": [
            "01"
          ]
        }
      },
      "part_id": 90
    }
  }
}

 

 

getPivotSrvUserFilterList

Zu dem Benutzer kann eine Liste der gespeicherten Filter geladen werden, um diese bspw. dem Anwender in einer Selectbox anzuzeigen. Hierfür ist nur der Aufruf der Funktion ohne weitere Parameter notwendig.

 

Anfrageobjekt

{
  "method": "getPivotSrvUserFilterList",
  "requestid": 5,
  "param": {
    "UpdJsrHdl": "___userhandle___"
  }
}

 

Rückgabeobjekt

Das Rückgabeobjekt liefert im Ergebnis ("result") eine Liste der gespeicherten Filter. Hat der Benutzer bisher keine Filter gespeichert, bleibt die Liste (das Array) leer.

{
  "requesterror": 0,
  "requestid": 5,
  "requestmethod": "getPivotSrvUserFilterList",
  "requestduration": 0.0547,
  "result": {
    "rc": 0,
    "error": "",
    "data": {
      "userfilterlist": []
    }
  }
}

 

Existieren zu dem Benutzer gespeicherte Filter, werden diese als Objekte im Array "userfilterlist" zurückgeliefert. Mit der zurückgelieferten IID eines Filters kann dieser geladen werden ("getPivotSrvUserFilter").

{
  "requesterror": 0,
  "requestid": 5,
  "requestmethod": "getPivotSrvUserFilterList",
  "requestduration": 0.0537,
  "result": {
    "rc": 0,
    "error": "",
    "data": {
      "userfilterlist": [
        {
          "iid": "20762a85bb20202020212024",
          "title": "myTitleForMyFilter",
          "descr": "myDescription",
          "default": 0,
          "part_id": 90,
          "pivot_id": 1
        }
      ]
    }
  }
}

 

 

getPivotSrvUserFilter

Ist die eindeutige IID eines Filters bekannt, wird diese als Parameter übergeben. Die Rückgabe liefert dann die Filterkonfiguration, die für "getPivotSrvData" genutzt werden kann.

Anfrageobjekt

{
  "method": "getPivotSrvUserFilter",
  "requestid": 6,
  "param": {
    "iid": "20762a85bb20202020212024",
    "UpdJsrHdl": "___userhandle___"
  }
}

 

Rückgabeobjekt

{
  "requesterror": 0,
  "requestid": 6,
  "requestmethod": "getPivotSrvUserFilter",
  "requestduration": 0.0462,
  "result": {
    "rc": 0,
    "error": "",
    "data": {
      "part_id": 90,
      "userfilter": {
        "iid": "20762a85bb20202020212024",
        "title": "myTitleForMyFilter",
        "descr": "myDescription",
        "default": 0,
        "part_id": 90,
        "pivot_id": 1,
        "filter": {
          "f90z0": [
            "2013",
            "2014"
          ],
          "f90z1": [
            "01"
          ]
        }
      }
    }
  }
}

 

 

 Hinweise zur Online-Hilfe
 

© 2017 Cortex AG
(letzte Aktualisierung: 12.04.2017)

 Haftungsausschluss 

Impressum    AGB