- 24 Jun 2025
- 6 Minuten zu lesen
- Drucken
- DunkelHell
- pdf
Funktionen und Filterargumente
- Aktualisiert am 24 Jun 2025
- 6 Minuten zu lesen
- Drucken
- DunkelHell
- pdf
Es gibt viele weitere Funktionen und Filterargumente, die dabei helfen die Daten weiter zu bearbeiten, zu filtern und zu formatieren. Eine komplette Liste aller Funktionen findet sich im Hilfebereich unter Funktionen.
Mathematische Funktionen
Einfache Berechnungen
Es ist möglich mit ermittelten Werte weiter zu rechnen. Dazu werden einfach die Zeichen für Addition (+), Subtraktion (-), Multiplikation (*) und Division (/) benutzt.
Code-Beispiel:
VALUES count(...) * count(...) + count(...) AS 'Ergebnis'
max
Die Funktion ermittelt den maximalen Wert aus einer übergebenen Liste.
Syntax: max(<Liste>)
Code-Beispiel:
VALUES max(x.liste) AS 'Maximaler Wert'
min
Die Funktion ermittelt den minimalen Wert aus einer übergebenen Liste.
Syntax: min(<Liste>)
Code-Beispiel:
VALUES min(x.liste) AS 'Minimaler Wert'
sum
Diese Funktion summiert alle Werte im übergebenen Parameter.
Syntax: sum(<Parameter>)
Code-Beispiel:
VALUES sum(assets[asset_type='Risk'].risk_value) AS 'Summe'
Achtung!
Wenn einer der Listenwerte NoData liefert (also leer ist), wird für die gesamte Summe der
Wert NoData zurückgeliefert. Die übergebenen Listen sollten daher zunächst durch die default/defaults Funktion mit sinnvollen Standardwerten belegt werden.
Code-Beispiel:
VALUES sum(defaults(assets[asset_type='Risk'].risk_value,0)) AS 'Summe'
Formatierungen
format_array
Diese Funktion gibt den übergebenen Wert als einen String zurück, die einzelnen Werte getrennt durch den angegebenen Separator. Wird kein Separator angebenen, so wie der Standardseparator Komma benutzt. Der dritte Parameter gibt an, wie das Array eingeschlossen wird, standardmäßig werden eckige Klammern benutzt.
Syntax: format_array(<Wert 1>, <Separator>, <mark>)
Code-Beispiel:
VALUES format_array(x.text)
VALUES format_array(x.text, ':')
VALUES format_array(x.text, ':', ' ')
format_date
Datumsangaben können nach eigenen Wünschen formatiert werden. Wird kein Format angegeben, so wird ein Standardformat benutze, welches nur das Datum und nicht die Uhrzeit ausgibt. Hier werden nur einige gebräuchliche Formate angegeben.
Syntax: format_date(<Datumswert>,’<Format>’)
Gängige Formate:
%d.%m.%Y
(Tag.Monat.Jahr): z. B. 20.08.2019
%d.%m.%y
(Tag.Monat.Jahr): z. B. 20.07.19
%D
(Monat/Tag/Jahr): z. B. 07/20/19
%A %d. %b %yD
(Wochentag Tag Monatsname Jahr): z. B. Don 21. Nov 2024
%d. %b %Y
(Tag. Monatsname Jahr): z. B. 20. Jul 2019
%d. %B %Y - %R Uhr’
(Tag Monatsname Jahr - Stunde:Minute Uhr): z. B. 20. November 2019 - 14:33 Uhr
%T
(Stunde:Minute:Sekunden:) z. B. 11:42:38
%H Stunden %M Minuten
(Stunden Stunden Minuten Minuten): z. B. 11 Stunden 42 Minuten
Code-Beispiel:
VALUES format_date(x.date)
VALUES format_date(x.date, '%d.%m.%y') AS Datum
VALUES format_date(x.date_of_last_change, '%d. %b %Y - %R Uhr') AS 'Datum'
VALUES format_date(x.date_of_last_change, '%D') AS 'Datum'
Ausgabebeispiele:
format_datetime
Die Parameter der Funktion sind genau so wie die der Funktion format_date. Wird kein Format angegeben, so wird ein Standardformat benutzt, welches das Datum und die Uhrzeit ausgibt.
Syntax: format_datetime(<Datumswert>, <Format>)
Code-Beispiel:
VALUES format_datetime(x.datum)
Ausgabebeispiel:
format_number
Attributfelder, die Zahlen enthalten oder berechnete Ergebnisse können weiter formatiert werden, um sie besser lesbar zu machen.
Syntax: format_number(<Attribut>,<Format>)
comma=’.’
Das Komma wird als Punkt dargestellt: z. B. 1.2
comma=’,’
Das Komma wird als Komma dargestellt: z. B. 1,2
dot=’.’
Das 1000er Trennzeichen wird als Punkt dargestellt: z. B. 1.293.234
dot=’,’
Das 1000er Trennzeichen wird als Komma dargestellt: z. B. 1,293,234
grouping=<Wert>
So wird die Anzahl der zu gruppierenden Zeichen festgelegt. Diese Angabe ist nur sinnvoll zusammen mit dot.
decimals=<Wert>
Die Anzahl auszugebener Nachkommastellen, bei Wert=2 werden 2 Nachkommatellen ausgegeben, dabei wird nur abgeschnitten, nicht gerundet.
’.2f’
Es werden 2 Nachkommstellen ausgegeben, aber es wird mathematisch gerundet.
Code-Beispiel:
VALUES format_number(x.sum, grouping=3) AS 'Summe'
VALUES format_date(x.procent_value, decimals=2) AS 'Prozentwert'
VALUES format_date(x.value, '.2f') AS 'Wert'
Ausgabebeispiele:
Konvertierungen
date
Die Funktion konvertiert den angegebenen Parameter in ein Datum.
Syntax: date(<Parameter>)
Code-Beispiel:
X-VALUES date(x.wert)
flat
Die Funktion ebnet eine Liste von Listen im ersten Parameter in eine einfache Liste. Leere Listeneinträge werden verworfen.
Syntax: flat(<Parameter>)
Code-Beispiel:
X-VALUES flat(assets[asset_type='Training' AND (display_name contains 'ISMS')].participants)
X-VALUES flat(assets[asset_type='Application'].zielobjekte)
Ein weiteres Beispiel findet sich unter Ausgaben aller ToDos aus allen Cases mit Case und Status.
default
Wenn Wert 1 leer ist, so wird Wert 2 zurückgegeben.
Syntax: default(<Wert 1>, <Wert 2>)
Code-Beispiel:
VALUES default(x.wert, 0)
defaults
Um abzufangen, wenn Attribute in einer Liste nicht ausgefüllt sind, kann die Funktion default genutzt werden. Wenn Wert 1 den Inhalt NoData als Inhalt hat, als nicht ausgefüllt ist, dann wird Wert 2 zurückgegeben. Damit kann abgefangen werden, dass Attribute, über die Summen gebildet werden, alle einen Wert haben, indem bei nicht gesetztem Attribut, der Wert 0 angenommen wird.
Syntax: defaults(<Wert 1>, <Wert 2>)
Code-Beispiel:
VALUES sum(defaults(assets[asset_type='Risk'].risk_value),0) AS 'Summe'
lookup_displayname
Sind Attribute nicht bei dem Asset selber eingetragen, sondern verlinkt, so ist dort nur die UUID Nummer enthalten, anstatt dem Anzeigenamen des verlinkten Assets.
Hier kann der entsprechende Anzeigename dann mit der Funktion lookup_displayname ermittelt und angezeigt werden.
Syntax: lookup_displayname(<Attributfeld>)
Code-Beispiel:
VALUES lookup_displayname(x.owner) AS 'Besitzer'
map
Mit map werden Feldinhalten Werte zugewiesen und diese dann ausgegeben.
Syntax: map(<Attribut><alter Inhalt 1>:<neuer Inhalt 1>, <alter Inhalt 2>:<neuer Inhalt 2>, ....)
Code-Beispiel:
map(x.status, {'aktiv':'Aktiv', 'prod':'Produktion', 'planed':'Geplant'})
map(x.own_mta, {'< 1 Tag':0, '< 3 Tage':1, '< 5 Tage':2, 'keine MTA': 4})
Zudem ist es möglich auch die Reihnefolge mit map anzupassen.
Syntax: orderby map(x.<attribut>, {<value1>: 1, <value2>: 2, <value3>: 3})
Code-Beispiel:
TYPE table
X-VALUES assets[asset_type="Risk" and risk_matrix EXISTS] orderby map(x.risk_matrix, {"Green": 1, "Yellow": 2, "Red": 3})
VALUES x.name
values x.risk_matrix
Zählen
count
Count zählt die Anzahl der Assets im ersten Parameter. Es wird oft verwendet, wenn die Angabe GROUPBY (Sortieren nach einem angegebenen Attribut) verwendet wird.
Syntax: count(<Parameter>)
Code-Beispiel:
TYPE 'table'
X-VALUES assets GROUPBY x.status
VALUES first(x.status)
VALUES count(x)
TYPE 'table'
X-VALUES [1]
VALUES count(assets[asset_type='Server']) AS 'Server Gesamt'
VALUES count(assets[asset_type='Server' AND status='Produktiv']) AS 'Produktive Server'
VALUES count(assets[asset_type='Server' AND status='Inaktiv']) AS 'Inaktive Server'
count_equals
Count_equals zählt die Anzahl der Elemente im ersten Parameter, die gleich dem zweiten Parameter sind.
Syntax: count_equals(<Parameter>, <Vergleichswert>)
Code-Beispiel:
VALUES count_equals(assets[asset_type='Server'].status, 'deployment')
Abfragen
if_equals
Mit dieser Funktion kann abgefragt werden, ob ein Wert einen bestimmten Inhalt hat und abhängig davon, wird ein Wert gesetzt. So können Werte für die Ausgabe im Report ersetzt werden, durch andere definierte Werte.
Wenn das Attribut den Wert 1 hat, dann wird Wert 2 zurückgegeben, sonst Wert 3.
Syntax: if_equals(<Attribut>, <Wert 1>, <Wert 2>, <Wert 3>)
Code-Beispiel:
VALUES if_equals(x.status, 'Produktiv', 'OK', 'nicht OK') AS 'Produktiv'
VALUES if_equals(x.type, 'Cloud', 'Webanwendung', x.type)
if_exists
Mit dieser Funktion wird abgefragt, ob Wert 1 existiert, dann wird der Wert 2 zurückgegeben, ansonsten Wert 3.
Syntax: if_equals(<Wert 1>, <Wert 2>, <Wert 3>)
Code-Beispiel:
VALUES if_exists(x.verantwortliche, x.verantwortliche, ' ')
VALUES if_exists(x.is_extern, 'PASS', 'FAIL') AS 'Externer Mitarbeiter'
if_greater
Mit dieser Funktion kann Wert 1 auf größer Wert 2 abgeprüft werden. Ist die Bedingung erfüllt, so wird Wert 3 zurückgegeben, ansonsten Wert 4.
Syntax: if_greater(<Wert 1>, <Wert 2>, <Wert 3>, <Wert 4>)
Code-Beispiel:
VALUES if_greater(x.anzahl, 100, 'JA', 'NEIN')
exists
Mit exists kann abgefragt werden, ob das Attributfeld einen Wert beinhaltet. Diese Funktion wird oft in Filterausdrücken verwendet.
Syntax: (<attribut> exists)
Code-Beispiel:
TYPE 'table'
X-VALUES assets[(status exists)]
VALUES x AS 'Asset Name'
VALUES x.status AS 'Status'
contains
Mit contains kann abgefragt werden, ob das Attributfeld einen bestimmten Wert beinhaltet. Diese Funktion wird oft in Filterausdrücken verwendet.
Syntax: (<attribut> contains <Wert>)
Code-Beispiel:
TYPE 'table'
X-VALUES assets[(status contains 'Prod')]
VALUES x AS 'Asset Name'
VALUES x.status AS 'Status'
Datumsfunktionen
now
Die Funktion hat keine Parameter und gibt das aktuelle Datum mit der aktuellen Zeit aus.
Syntax: now()
Code-Beispiel:
VALUES now()
VALUES format_date(now())
timespan
Die Funktion timespan konvertiert eine Zeitangabe in ein internes Format, mit dem dann bei Datumsangaben gerechnet werden kann. Datumsfelder müssen mit der Funktion date erst umgewandelt werden.
Syntax: timespan(<Zeitspanne>)
Folgende Werte sind möglich. Dabei ist es möglich eine Zeitdauer anzugeben oder einen festen Wert zu setzen. Es können sowohl positive als auch negative Zahlenwerte angegeben werden.
years=<Dauer>
months=<Dauer>
weeks=<Dauer>
days=<Dauer>
hours=<Dauer>
minutes=<Dauer>
seconds=<Dauer>
microseconds=<Dauer>
year=<Wert>
month=<Wert>
week=<Wert>
day=<Wert>
hour=<Wert>
minute=<Wert>
second=<Wert>
microsecond=<Wert>
Code-Beispiel:
VALUES now() + timespan(months=1)
VALUES date(x.date_of_last_change) + timespan(years=1)
VALUES now() + timespan(day=1, months=1)
VALUES date(x.date) + timespan(day=1, days=-1)
Ausgabebeispiele:
Sonstige
distinct
Mithilfe dieser Funktion werden Redundanzen, die in einer Tabelle auftreten können, eliminiert und die Werte werden jeweils nur einmal angezeigt. Diese Angabe erfolgt direkt hinter X-VALUES und bekommt dann in () die Assets, die dargestellt werden sollen. Diese Funktion ist auch nur dort sinnvoll.
Syntax:
distinct(<Assets>)
Code-Beispiel:
X-VALUES distinct(assets[asset_type='Server'])
first
Mit first wird nur das erste Asset einer Reihe von Assets ausgegeben. Diese Funktion wird oft verwendet, wenn nach der UUID gesucht wird, oder aus einer Liste nur das erste Asset ausgegeben werden soll.
Syntax: first(<Filter>)
Code-Beispiel:
VALUES first(assets[uuid=x.server]) AS 'Server'
VALUES first(x.responsible).full_name
VALUES first(assets[x=uuid]).display_name
last
Mit last wird nur das letzte Asset einer Reihe von Assets ausgegeben.
Syntax: last(<Filter>)
Code-Beispiel:
VALUES last(x.responsible).full_name
user
Mit der Funktion user wird der aktuell angemeldete User ermittelt und das Attribut username ausgegeben.
Syntax: user()
Code-Beispiel:
VALUES user() AS 'aktueller User'
user_asset
Mit der Funktion user_asset wird das Asset des aktuell angemeldeten Benutzer ermittelt. Hier können durch Hinzufügen der Attributbezeichungen alle Attribute aus der Assetklasse Mitarbeiter ausgegeben werden. Standardwert ist hier der Anzeigename, wenn nichts angegeben wird.
Syntax: user_asset().<attribut>
Code-Beispiel:
VALUES user_asset().uuid AS 'UUID des aktuellen Users'
VALUES user_asset().full_name AS 'Aktueller User'
Mit dieser Funktion lassen sich personalisierte Queries erstellen, indem darauf gefiltert wird.
X-VALUES assets[asset_type='Employee' AND uuid=user_asset().uuid]
X-VALUES assets[asset_type='Process' AND (owner=user_asset().uuid)]
type
Mit der Funktion type wird das Format des angezeigten Attributes ausgegeben. Diese Funktion hilft bei der Erstellung von Queries, indem ermittelt werden kann, welchen Tpy dieses Feld hat, z. B. str (String), bool (Boolean), list (Liste).
Syntax: type(<attribut>)
Code-Beispiel:
VALUES type(x) AS 'Feldtyp'
VALUES type(x.name) AS 'Feldtyp'
VALUES type(x.wert) AS 'Feldtyp'