Business Intelligence Daten via Python abfragen
Betriebsart
Cloud Abo
|ON-PREMISES
Module
Leistung & CRM
Budget & Teilprojekt
Fremdkosten
Ressourcenplanung
Business Intelligence
Ab Vertec 6.8 können die Zahlen aus dem Business Intelligence Modul (BI) auch ausserhalb der BI Ansichten genutzt werden, zum Beispiel in Listen oder Berichten. Damit können ohne Performanceeinbussen auch komplexe Berechnungen angezeigt werden, da auf die vorberechneten BI Zahlen zugegriffen wird.
Dafür gibt es die Python Funktion:
vtcapp.bigetdata(source, dimensions, measures, from, till, currency=None)
source |
Als source kann ein einzelnes Objekt oder eine Liste von Objekten angegeben werden, für welche die BI Daten gelesen werden sollen. In diesem Fall werden nur die Werte berücksichtigt, die zu diesen Objekten gehören. Falls source |
dimensions |
Hier werden die gewünschten Dimensionen als Liste angegeben. Im Gegensatz zur BI Oberfläche werden die Werte bei Angabe von mehreren Dimensionen nach diesen gruppiert. Wird beispielsweise Folgende Werte können übergeben werden:
|
measures |
Eine Liste von BI Kennzahlen. Die Liste kann entweder als String-Liste mit den Namen der Measures oder als Liste von Measure-Objekten übergeben werden. |
from, till |
Date values, welche den Start- bzw. Endpunkt der Auswertung bezeichnen. Wird |
currency |
Optional. Währungskürzel oder ein Währungsobjekt aus Vertec. Gibt die Währung an, in der die Daten ausgegeben werden sollen. Nur notwendig, wenn währungsbehaftete Daten (Betrag, Ansatz) ausgegeben werden. Wird keine |
Der Rückgabewert von bigetdata()
ist ein Hilfsobjekt mit folgenden Methoden:
get_dimensions() |
Gibt eine Liste aller (gefundenen) Dimensionstupel zurück. |
get_value(dimension_tuple, measure_name, default_value=0) |
Gibt den Wert einer Kennzahl für ein Dimensionstupel zurück.
|
Für die Verwendung dieser Python Funktion ist ein lizenziertes Business Intelligence Modul vorausgesetzt, ansonsten erscheint eine Fehlermeldung.
Die folgenden Beispiele können Sie im Script Editor laufen lassen. Sie geben jeweils das Resultat im Ausgabefenster aus und sollen Ihnen helfen, den Mechanismus zu verstehen.
projects = vtcapp.currentlogin().evalocl("eigprojekte->select(aktiv)") result = vtcapp.bigetdata(projects, ["Projekt"], ["FeesExt"], None, None) for project in projects: # standardmässig "0", wenn es für eine Kennzahl keinen Wert gibt print("Honorar: {}".format(result.get_value(project, "FeesExt"))) # alternativ kann man einen default Wert angeben, hier None print("Honorar: {}".format(result.get_value(project, "FeesExt", None)))
projects = vtcapp.currentlogin().evalocl("eigprojekte->select(aktiv)") dimensions = [ ("Projektleiter", "Projektbearbeiter_1"), ("Bearbeiter", "Projektbearbeiter_2") ] measures = ["MinutesInt"] result = vtcapp.bigetdata(projects, dimensions, measures, None, None) for key in result.get_dimensions(): text = "Projektleiter {}, Bearbeiter {}\nAufwand {}".format( key[0], key[1], result.get_value(key, "MinutesInt")) print(text)