Sonderfunktionen
Function | Beschreibung | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
String[] comments() | Gibt ein Array von Text innerhalb von Kommentaren zurück. ArrayUtils.toString(comments()) | |||||||||||||||||||||||||||||||||||
String[] commentsDetails() | Liefert ein Array von Kommentaren im Format datetime + text, z.B.: 216-08-12T15:24:22.486;text. ArrayUtils.toString(commentsDetails()) | |||||||||||||||||||||||||||||||||||
| Bewertet den übergebenen Ausdruck mit dem angegebenen Filter. Zum Beispiel: filter('M_MEASURE > 100') { L_ID_COUNT } | |||||||||||||||||||||||||||||||||||
| Liefert den aggregierten Wert des eingebetteten Ausdrucks. Die Aggregation wird für die angegebene obere Ebene berechnet. Zum Beispiel: total = aggregatePrevLevel(1, { cumulateFromTime(actualYear(), { 'M_NAME_1' + 'M_NAME_2' }); }); current = cumulateFromTime(actualYear(), { 'M_NAME_1' + 'M_NAME_2' }); return current / total; | |||||||||||||||||||||||||||||||||||
Double firstValue() | Liefert den niedrigsten Wert der ausgewählten Ebene (Messung). Zum Beispiel:
| |||||||||||||||||||||||||||||||||||
Double forEachRow('expression') | Berechnet den Ausdruck auf Datasetzeilebene und berechnet die Summe aus bestimmten Ergebnissen. Das folgende Beispiel zeigt den Unterschied der Verwendung von Multiplikation innerhalb der forEachRow()-Methode und außerhalb:
| |||||||||||||||||||||||||||||||||||
Double forEachRow('expression','aggregation') | Berechnet den Ausdruck auf Datasetebene und berechnet die Aggregation basierend auf dem zweiten Parameter aus bestimmten Ergebnissen. Die Aggregation kann Summen, MIN, MAX, AVG, COUNT, DCOUNT beinhalten. | |||||||||||||||||||||||||||||||||||
Double formatNumber(number value) | Formatiert den Wert entsprechend dem Format des Indikators aus den Einstellungen. | |||||||||||||||||||||||||||||||||||
Double formatNumber(number value, 'String pattern') | Formatiert den Wert entsprechend dem Format des Indikators aus den Einstellungen. Mit dem Zeichenkettenmuster können Sie steuern, wie das angegebene Format aussieht. | |||||||||||||||||||||||||||||||||||
Double lastValue() | Liefert den niedrigsten Wert der ausgewählten Ebene (Messwert). Zum Beispiel:
| |||||||||||||||||||||||||||||||||||
void eachMember(String attribute) { expression } | Berechnet den Ausdruck für bestimmte Attributwerte, die durch den Attributparameter definiert sind.
Lesen Sie die besten besten Praktiken der Formel für die korrekte Verwendung. | |||||||||||||||||||||||||||||||||||
| Berechnet den Ausdruck für die gewünschten Drill-Down-Memberwerte. Beispiel: return members('[L_LEVEL_1=VAL][L_LEVEL_2="VAL1,VAL2"]', { M_NAME_1 * M_NAME_2 }) Dieses Beispiel gibt den Wert des Kennzeichens M_NAME_1 zurück, das für bestimmte Werte aggregiert wurde. Lesen Sie die besten Praktiken der Formel für die korrekte Verwendung. | |||||||||||||||||||||||||||||||||||
| Berechnet den Ausdruck für bestimmte Werte und berechnet die Summe aus bestimmten Ergebnissen. Das folgende Beispiel zeigt den Unterschied der Verwendung von Multiplikation innerhalb der membersSum()-Methode und außerhalb:
Lesen Sie die besten Praktiken der Formel für die korrekte Verwendung. | |||||||||||||||||||||||||||||||||||
| Berechnet den Ausdruck für bestimmte Werte des definierten LevelCodes und berechnet die Summe aus bestimmten Ergebnissen. Lesen Sie die besten Praktiken der Formel für die korrekte Verwendung. | |||||||||||||||||||||||||||||||||||
| Berechnet den Ausdruck für bestimmte Werte und berechnet den Durchschnittswert aus bestimmten Ergebnissen. Lesen Sie die besten Praktiken der Formel für die korrekte Verwendung. | |||||||||||||||||||||||||||||||||||
| Berechnet den Ausdruck für bestimmte Werte des definierten LevelCodes und berechnet den Durchschnittswert aus bestimmten Ergebnissen. Lesen Sie die besten Praktiken der Formel für die korrekte Verwendung. | |||||||||||||||||||||||||||||||||||
| Berechnet den Ausdruck für bestimmte Werte und berechnet den Minimalwert aus bestimmten Ergebnissen. Lesen Sie die besten Praktiken der Formel für die korrekte Verwendung. | |||||||||||||||||||||||||||||||||||
| Berechnet den Ausdruck für bestimmte Werte des definierten LevelCodes und berechnet den Minimalwert aus bestimmten Ergebnissen. Lesen Sie die besten Praktiken der Formel für die korrekte Verwendung. | |||||||||||||||||||||||||||||||||||
| Berechnet den Ausdruck für bestimmte Werte und berechnet den Maximalwert aus bestimmten Ergebnissen. Lesen Sie die besten Praktiken der Formel für die korrekte Verwendung. | |||||||||||||||||||||||||||||||||||
| Berechnet den Ausdruck für bestimmte Werte des definierten levelCode und berechnet den Maximalwert aus bestimmten Ergebnissen. Lesen Sie die besten Praktiken der Formel für die korrekte Verwendung. | |||||||||||||||||||||||||||||||||||
| Berechnet den Ausdruck für bestimmte Werte des definierten levelCode an definierten Daten. dateAttribute('L_DATE') {dateInterval('2014-01-01','2014-12-01') { 'M_NAME_1' + 'M_NAME_2' } } | |||||||||||||||||||||||||||||||||||
Double timeAttribute(String levelCode){ expression } | Berechnet den Ausdruck für bestimmte Werte des definierten levelCode zur definierten Zeit. timeAttribute('L_TIME') {timeInterval('10:00:00','12:00:00') { 'M_NAME_1' + 'M_NAME_2' } } | |||||||||||||||||||||||||||||||||||
| Returns the attribute code of current member. Example:
| |||||||||||||||||||||||||||||||||||
String localize(String attributeCode, String valueToLocalize) | ||||||||||||||||||||||||||||||||||||
String localize(String dataSetCode, String attributeCode, String valueToLocalize); | Verfahren zum Laden von Übersetzungen aus einem referenzierten Dataset. localize('TRANSLATIONS', 'L_ORIG', firstValue('L_STATE')); | |||||||||||||||||||||||||||||||||||
| Liefert den Attributcode und den Wert des aktuellen Elements in der folgenden Form[L_CODE={VALUE}]. Beispiel:
| |||||||||||||||||||||||||||||||||||
| Liefert den Wert des aktuellen Elements. Beispiel:
| |||||||||||||||||||||||||||||||||||
printComments() | Liefert formatierten Text von Kommentaren. Es ist nicht nötig, darüber zu iterieren. | |||||||||||||||||||||||||||||||||||
rank() { expression } | Liefert die numerische Reihenfolge (Rang) des Indikators, der auf den Ausdruck innerhalb der verwendeten Auflistung angewendet wird. Beispiel:
| |||||||||||||||||||||||||||||||||||
rank('L_DRILLDOWN', 'M_INDICATOR') | Der Rang wird über einen bestimmten Drill-Down berechnet. | |||||||||||||||||||||||||||||||||||
rank('L_DRILLDOWN', 'MEMBER', 'M_INDICATOR') | The rank is calculated over a certain drill-down.
withoutFilter() { rank('L_CITY', 'Aberdeen', 'M_VISITS') } | |||||||||||||||||||||||||||||||||||
rankInner() { expression } | Liefert die numerische Reihenfolge (Rang - aufsteigend) des im Ausdruck verwendeten Indikators innerhalb aller verwendeten Aufrisse in der Tabelle. Beispiel:
| |||||||||||||||||||||||||||||||||||
rankInner(true) { expression } | Liefert die numerische Reihenfolge (Rang - absteigend) des im Ausdruck verwendeten Indikators innerhalb aller verwendeten Aufrisse in der Tabelle. Beispiel:
| |||||||||||||||||||||||||||||||||||
setDebugOn(true) | Aktiviert den Debug-Modus. Ifformulacontains Fehler, Tabellenzelle enthält detaillierte Stapelverfolgung über Fehler, Diagramm und KPI-Label werden nicht dargestellt und Fehlerdetails werden ausgedruckt. Wir empfehlen, diese Funktion nur während des Debuggens zu verwenden. Wenn nicht debuggend, löschen oder als Kommentar markieren: //setDebugOn(true) | |||||||||||||||||||||||||||||||||||
withoutDateTime() { expression } | Deaktivieren Sie die geltenden Datums- und Zeitintervalle. Beispiel:
| |||||||||||||||||||||||||||||||||||
withoutDrillDown() { expression } | Opt-out von den angewandten Drill-Downs. Beispiel:
In Fällen, in denen eine mehrfache Drill-Down-Anwendung nicht möglich ist, können einige der Drill-Downs von der Funktion withoutDrillDownFunction ausgeschlossen werden (die Aggregation für die obere Ebene wird angezeigt).
| |||||||||||||||||||||||||||||||||||
withoutFilter() { expression }
| Deaktivieren Sie die angewandten Filter. Beispiel: (Der Filter ist auf SEGMENT=SMB gesetzt)
| |||||||||||||||||||||||||||||||||||
withoutReportFilter() { expression } | Es werden nur Ansichtsfilter und Indikatorfilter angewendet (verfügbar seit BellaDati 2.9.4). | |||||||||||||||||||||||||||||||||||
withoutViewFilter() { expression } | Es werden nur Reportfilter und Indikatorfilter angewendet (verfügbar seit BellaDati 2.9.4). | |||||||||||||||||||||||||||||||||||
loadData('L_DRILLDOWN', 'M_INDICATOR') | Ermöglicht das Laden von Werten eines Indikators für alle Werte des angegebenen Attributs. Es kann die Leistung von Formeln erheblich verbessern. Die Funktion gibt die Karte der Werte und ihrer Werte zurück. Auf diese Karte kann mit der Funktion getMapValue() zugegriffen werden.
data = loadData('L_DRILLDOWN', 'M_INDICATOR') getMapValue(data, '[memberId]') Die memberId muss folgendes Format haben: [memberId] = [L_ATTRIBUTE={Value}]. Normalerweise wird die Funktion zusammen mit withoutDrillDown() verwendet. withoutDrillDown() { data = loadData('L_COUNTRY', 'M_NUMBERS_BUILT') getMapValue(data, '[L_COUNTRY={Germany}]') } Es ist auch möglich, Rang oder Aggregation wie MAX, MIN usw. zu verwenden: data = loadData('L_DRILLDOWN', 'M_INDICATOR_rank()') getMapValue(data, '[memberId]') //will return M_INDICATOR_rank() data = loadData('L_DRILLDOWN', 'M_INDICATOR@MAX') getMapValue(data, '[memberId]') //will return the highest value of indicator
Anstelle des Kennzeichens kann der Benutzer auch den ersten bis letzten Wert eines Attributs abrufen. data = loadData('L_DRILLDOWN', 'L_ATTRIBUTE_LASTVALUE') data = loadData('L_DRILLDOWN', 'L_ATTRIBUTE_FIRSTVALUE') |
Parameterübergabe an die Zeitformel
Es ist möglich, die Zeiterfassung über eine Formel zu definieren. Die folgenden Funktionen gelten nur für diese Art von Formeln.
Funktion | Beschreibung |
---|---|
| Setzt den Parameterwert. |
| Lädt den Parameterwert. |
| Rückgabekennzeichen aus dem Kontext der Zeile der aktuellen Tabelle. Diese Funktion gibt auch Werte von formeldefinierten Indikatoren zurück (definiert im Report). Beispiel: value(actualYear(),'actualMonth - 1m - 1d',indicator()) |
Betrachten Sie folgendes Beispiel - wir haben mehrere Kennzeichen mit den Codes M_NAME_1, M_NAME_2 und M_NAME_3. Diese Indikatoren werden in den Formeln 1 - 3 verwendet, der Zeitbereich wird durch die Zeitformeln 1 - 5 definiert.
| Time formula 1: | Time formula 2: | Time formula 3: | Time formula 4: | Time formula 5: |
Formula 1: | 1000 | 2000 | 3000 | 1000 | 1000 |
Formula 2: | 1000 | 2000 | 3000 | 2000 | 2000 |
Formula 3: | 1000 | 2000 | 3000 | 3000 | 3000 |
| 1000 | 2000 | 3000 | N/A | 1000 |
| 1000 | 2000 | 3000 | N/A | 2000 |
| 1000 | 2000 | 3000 | N/A | 3000 |
Benutzerinformationen abrufen
Es ist möglich, Informationen über angemeldete Benutzer für Ihre Reportsanforderungen zu erhalten.
Funktion | Beschreibung |
---|---|
String getSignedUserName() | Returns name of currently signed in user. |
String getSignedUserSurname() | Gibt den Nachnamen des aktuell angemeldeten Benutzers zurück. |
String getSignedUserEmail() | Gibt die E-Mail des aktuell angemeldeten Benutzers zurück. |
String getSignedUser() | Liefert den Benutzernamen des aktuell angemeldeten Benutzers. |
Arbeiten mit Listen und Feldern
BellaDati unterstützt alle Felder von https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html und ArrayUtils von https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/ArrayUtils.html.
Syntax: Zuerst den Namen des Pakets definieren, dann die gewünschte Methode verwenden.
Beispiel
def int[] a = [1,2,3]
a = ArrayUtils.add(a, 0)
Arrays.sort(a)
return a[3]