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())

void filter(String filterExpression, { expression } )

Bewertet den übergebenen Ausdruck mit dem angegebenen Filter. Zum Beispiel:

filter('M_MEASURE > 100') { L_ID_COUNT } 

Double aggregatePrevLevel(int countOfPrevlevels, { expression } )

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:

 DatefirstValue('L_DATE')
Project11/1/20151/1/2015
Project15/1/20151/1/2015
Project23/1/20153/1/2015
Project28/1/20153/1/2015
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:

 

 

Ind1

Ind2

forEachRow('M_IND_1 * M_IND_2')

M_IND_1 * M_IND_2

Member

 

5

30

80

150

 

DrillDownMember1

3

20

60

60

 

DrillDownMember2

2

10

20

20

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:

ProjectDatelastValue('L_DATE')
Project11/1/20155/1/2015
Project15/1/20155/1/2015
Project23/1/20157/1/2015
Project27/1/20157/1/2015


void eachMember(String attribute) { expression }

Berechnet den Ausdruck für bestimmte Attributwerte, die durch den Attributparameter definiert sind.

L_ATTRIBUTE_1

L_ATTRIBUTE_2

Ind1

Ind2

def result = 0

eachMember('L_ATTRIBUTE_2') { result = M_IND_1 * M_IND_2 }

return result

M_IND_1 * M_IND_2

Value

 

5

30

80

150

 

Value1

3

20

60

60

 

Value2

2

10

20

20

Lesen Sie die besten besten Praktiken der Formel für die korrekte Verwendung.

Double members(String path, { expression } )

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.

Double membersSum({ expression } )

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:

 

 

Ind1

Ind2

membersSum( { M_IND_1 * M_IND_2 } )

M_IND_1 * M_IND_2

Member

 

5

30

80

150

 

DrillDownMember1

3

20

60

60

 

DrillDownMember2

2

10

20

20

Lesen Sie die besten Praktiken der Formel für die korrekte Verwendung.

Double membersSum(String levelCode, { expression } )

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.

Double membersAvg({ expression } )

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.

Double membersAvg(String levelCode, { expression } )

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.

Double membersMin({ expression } )

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.

Double membersMin(String levelCode, { expression } )

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.

Double membersMax({ expression } )

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.

Double membersMax(String levelCode, { expression } )

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.

Double dateAttribute(String levelCode){ expression }

 

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' } }

String attributeCode()

Returns the attribute code of current member. Example:

 

Population

attributeCode()

Prague

1200000

L_CITY

Berlin

3000000

L_CITY

London

7825200

L_CITY

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'));

String memberIdentifier()

Liefert den Attributcode und den Wert des aktuellen Elements in der folgenden Form[L_CODE={VALUE}]. Beispiel:

 

Population

memberIdentifier()

Prague

1200000

[L_CITY= {Prague}]

Berlin

3000000

[L_CITY= {Berlin}]

London

7825200

[L_CITY= {London}]

String memberValue()

Liefert den Wert des aktuellen Elements. Beispiel:

 

Population

memberValue()

Prague

1200000

Prague

Berlin

3000000

Berlin

London

7825200

London

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:

User

Score

rank()

Peter

90.3

2

John

92.7

1

Anna

89.7

3

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:

Drill-downSalesrankInner()
Coffee750001
- Caffe Latte250003
- Caffe Mocca350002

- Decaf Espresso

150001
Tea1000002
- Lemon1000001
rankInner(true) { expression }

Liefert die numerische Reihenfolge (Rang - absteigend) des im Ausdruck verwendeten Indikators innerhalb aller verwendeten Aufrisse in der Tabelle. Beispiel:

Drill-downSalesrankInner(true)
Coffee750002
- Caffe Latte250002
 - Caffe Mocca350001
- Decaf Espresso150003
Tea1000001
- Lemon1000001
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:

Date

M_INDICATOR

withoutDateTime() { M_INDICATOR }

1/12 - 12/12

1000

3000

1/1/2013 - 1/31/2013

100

3000

withoutDrillDown() { expression }

Opt-out von den angewandten Drill-Downs. Beispiel:

Land

M_INDICATOR

withoutDrillDown() { M_INDICATOR }

+UK

3000

3000

--London

1000

3000

--Manchester

1000

3000

--Oxford

1000

3000

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).

Land

Stadt

M_INDICATOR

withoutDrillDown('L_CITY') { M_INDICATOR }

UK

Manchester

3000

4000

UK

London

1000

4000

France

Paris

1000

2000

France

Nice

1000

2000

withoutFilter() { expression }

 

Deaktivieren Sie die angewandten Filter. Beispiel: (Der Filter ist auf SEGMENT=SMB gesetzt)

City

M_INDICATOR

withoutFilter() { M_INDICATOR }

Paris

1000

3000

London

900

3000

Berlin

1100

3000

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

void set(String name, Object value)

Setzt den Parameterwert.

Object get(String name)

Lädt den Parameterwert.

Object indicator()

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:
M_NAME_1

Time formula 2:
M_NAME_2

Time formula 3:
M_NAME_3

Time formula 4:
s = get('suffix');
return value('M_NAME' + s);

Time formula 5:
value(actualYear(),
'now-1m',indicator())

Formula 1:
set('suffix', '_1');
return M_NAME_1;

1000

2000

3000

1000

1000

Formula 2:
set('suffix', '_2');
return M_NAME_2;

1000

2000

3000

2000

2000

Formula 3:
set('suffix', '_3');
return M_NAME_3;

1000

2000

3000

3000

3000

M_NAME_1

1000

2000

3000

N/A

1000

M_NAME_2

1000

2000

3000

N/A

2000

M_NAME_3

1000

2000

3000

N/A

3000

Benutzerinformationen abrufen

Es ist möglich, Informationen über angemeldete Benutzer für Ihre Reportsanforderungen zu erhalten.

FunktionBeschreibung
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]

Nächste Schritte