Funktionen und Filterargumente
    • 24 Jun 2025
    • 6 Minuten zu lesen
    • Dunkel
      Hell
    • pdf

    Funktionen und Filterargumente

    • Dunkel
      Hell
    • pdf

    Artikel-Zusammenfassung

    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'


    War dieser Artikel hilfreich?

    What's Next