特別な関数
関数 | 説明 | |||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
String[] comments() | コメント内のテキストの配列を返します。 ArrayUtils.toString(comments()) | |||||||||||||||||||||||||||||||||||
String[] commentsDetails() | 日付時刻+テキスト形式のコメントの配列を返します。例: 216-08-12T15:24:22.486;text. ArrayUtils.toString(commentsDetails()) | |||||||||||||||||||||||||||||||||||
| 指定されたフィルターでパスされた式を評価します。例: filter('M_MEASURE > 100') { L_ID_COUNT } | |||||||||||||||||||||||||||||||||||
| 埋め込み式の集計値を返します。指定された上位レベルの集計が計算されます。例: 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() | 選択したレベル(方法)の最低値を返します。例:
| |||||||||||||||||||||||||||||||||||
Double forEachRow('expression') | データセットの行レベルで式を計算し、特定の結果から合計を計算します。以下の例は、
| |||||||||||||||||||||||||||||||||||
Double forEachRow('expression','aggregation') | データセットの行レベルで式を計算し、特定の結果の2番目のパラメーターに基づいて集計を計算します。集計には、SUM、MIN、MAX、AVG、COUNT、DCOUNTを含めることができます。 | |||||||||||||||||||||||||||||||||||
Double formatNumber(number value) | 設定からインジケータのフォーマットに従って値をフォーマットします。 | |||||||||||||||||||||||||||||||||||
Double formatNumber(number value, 'String pattern') | 設定からインジケータのフォーマットに従って値をフォーマットします。文字列パターンを使用すると、形式の指定方法を制御できます。 | |||||||||||||||||||||||||||||||||||
Double lastValue() | 選択したレベル(方法)の最大値を返します。例:
| |||||||||||||||||||||||||||||||||||
void eachMember(String attribute) { expression } | 属性パラメーターによって定義された特定の属性値の式を計算します。
正しい使用法については、数式のベストプラクティスを参照して下さい。 | |||||||||||||||||||||||||||||||||||
| 目的のドリルダウンメンバー値の式を計算します。例: return members('[L_LEVEL_1=VAL][L_LEVEL_2="VAL1,VAL2"]', { M_NAME_1 * M_NAME_2 }) この例では、指定されたメンバーについて集計されたインジケータ 正しい使用法については、数式のベストプラクティスを参照して下さい。 | |||||||||||||||||||||||||||||||||||
| 特定のメンバーの式を計算し、特定の結果から合計を計算します。以下の例は、
正しい使用法については、数式のベストプラクティスを参照して下さい。 | |||||||||||||||||||||||||||||||||||
| 定義された 正しい使用法については、数式のベストプラクティスを参照して下さい。 | |||||||||||||||||||||||||||||||||||
| 特定のメンバーの式を計算し、特定の結果から平均値を計算します。 正しい使用法については、数式のベストプラクティスを参照して下さい。 | |||||||||||||||||||||||||||||||||||
| 定義された 正しい使用法については、数式のベストプラクティスを参照して下さい。 | |||||||||||||||||||||||||||||||||||
| 特定のメンバーの式を計算し、特定の結果から最小値を計算します。 正しい使用法については、数式のベストプラクティスを参照して下さい。 | |||||||||||||||||||||||||||||||||||
| 定義された 正しい使用法については、数式のベストプラクティスを参照して下さい。 | |||||||||||||||||||||||||||||||||||
| 特定のメンバーの式を計算し、特定の結果から最大値を計算します。 正しい使用法については、数式のベストプラクティスを参照して下さい。 | |||||||||||||||||||||||||||||||||||
| 定義された 正しい使用法については、数式のベストプラクティスを参照して下さい。 | |||||||||||||||||||||||||||||||||||
| 定義された日付に、定義された dateAttribute('L_DATE') {dateInterval('2014-01-01','2014-12-01') { 'M_NAME_1' + 'M_NAME_2' } } | |||||||||||||||||||||||||||||||||||
Double timeAttribute(String levelCode){ expression } | 定義された時間に、定義された timeAttribute('L_TIME') {timeInterval('10:00:00','12:00:00') { 'M_NAME_1' + 'M_NAME_2' } } | |||||||||||||||||||||||||||||||||||
| 現在のメンバーの属性コードを返します。例:
| |||||||||||||||||||||||||||||||||||
String localize(String attributeCode, String valueToLocalize) | ||||||||||||||||||||||||||||||||||||
String localize(String dataSetCode, String attributeCode, String valueToLocalize); | 参照データセットから翻訳をロードする方法。 localize('TRANSLATIONS', 'L_ORIG', firstValue('L_STATE')); | |||||||||||||||||||||||||||||||||||
| [L_CODE = {VALUE}]の形式で現在のメンバーの属性コードと値を返します。例:
| |||||||||||||||||||||||||||||||||||
| 現在のメンバーの値を返します。例:
| |||||||||||||||||||||||||||||||||||
printComments() | コメントの書式付きテキストを返します。それを繰り返す必要はありません。 | |||||||||||||||||||||||||||||||||||
rank() { expression } | 使用されたドリルダウン内の式に適用されるインジケータの番号順(ランク)を返します。例:
| |||||||||||||||||||||||||||||||||||
rank('L_DRILLDOWN', 'M_INDICATOR') | ランクは特定のドリルダウンで計算されます。 | |||||||||||||||||||||||||||||||||||
rank('L_DRILLDOWN', 'MEMBER', 'M_INDICATOR') | ランクは特定のドリルダウンとメンバーについて計算します。 withoutFilter() { rank('L_CITY', 'Aberdeen', 'M_VISITS') | |||||||||||||||||||||||||||||||||||
rankInner() { expression } | 表で使用されているすべてのドリルダウン内の式に適用されているインジケータの番号順(ランク-昇順)を返します。例:
| |||||||||||||||||||||||||||||||||||
rankInner(true) { expression } | 表で使用されているすべてのドリルダウン内の式に適用されているインジケータの数値順(ランク-降順)を返します。例:
| |||||||||||||||||||||||||||||||||||
setDebugOn(true) | デバッグモードを有効にします。式にエラーが含まれる場合、表セルにはエラーに関する詳細なスタックトレースが含まれ、チャートとKPIラベルはレンダリングされず、エラーの詳細が出力されます。 この関数は、デバッグ中にのみ使用することをお勧めします。デバッグしていない場合は、削除するかコメントとしてマークします: //setDebugOn(true) | |||||||||||||||||||||||||||||||||||
withoutDateTime() { expression } | 適用された日付と時間間隔から脱退します。例:
| |||||||||||||||||||||||||||||||||||
withoutDrillDown() { expression } | 適用されたドリルダウンから脱退します。例:
場合によっては、複数のドリルダウンが適用可能な場合、一部のドリルダウンをwithoutDrillDownFunction関数から除外できます(上位レベルの集計が表示されます)。
| |||||||||||||||||||||||||||||||||||
withoutFilter() { expression } | 適用されたフィルターから脱退します。例: (フィルターはSEGMENT=SMBに設定)
| |||||||||||||||||||||||||||||||||||
withoutReportFilter() { expression } | ビューフィルターとインジケータフィルターのみが適用されます(BellaDati 2.9.4以降で使用可能)。 BellaDati 2.9.17以降、どのフィルターをコードで無視するかを指定できます。 withoutReportFilter('code1','code2') | |||||||||||||||||||||||||||||||||||
withoutViewFilter() { expression } | レポートフィルターとインジケータフィルターのみが適用されます(BellaDati 2.9.4以降で使用可能)。 BellaDati 2.9.17以降、どのフィルターをコードで無視するかを指定できます。 withoutViewFilter('code1','code2') | |||||||||||||||||||||||||||||||||||
loadData('L_DRILLDOWN', 'M_INDICATOR') | 指定された属性のすべてのメンバーのインジケータの値をロードできます。数式のパフォーマンスを大幅に改善できます。関数は、メンバーとその値のマップを返します。このマップには、getMapValue()関数を使用してアクセスできます。 data = loadData('L_DRILLDOWN', 'M_INDICATOR') getMapValue(data, '[memberId]') memberIdの形式は以下である必要があります: [memberId] = [L_ATTRIBUTE={Value}]。通常、この関数はwithoutDrillDown()とともに使用されます。 withoutDrillDown() { data = loadData('L_COUNTRY', 'M_NUMBERS_BUILT') getMapValue(data, '[L_COUNTRY={Germany}]') } MAX、MINなどのランクや集計を使用することもできます: 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 インジケータの代わりに、ユーザーは属性の最後から最初の値を取得することもできます。 data = loadData('L_DRILLDOWN', 'L_ATTRIBUTE_LASTVALUE') data = loadData('L_DRILLDOWN', 'L_ATTRIBUTE_FIRSTVALUE') |
時間式にパラメーターを渡す
数式で時間入力を定義することができます。次の関数は、これらの種類の数式にのみ適用できます。
関数 | 説明 |
---|---|
| パラメーター値を設定します。 |
| パラメーター値をロードします。 |
| 現在の表の行のコンテキストからインジケータを返します。この関数は、式で定義されたインジケータ(レポートで定義)の値も返します。例: value(actualYear(),'actualMonth - 1m - 1d',indicator()) |
次の例を検討してください - コード M_NAME_1
, M_NAME_2,
M_NAME_3
といくつかのインジケータがあります。これらのインジケータは、式1-3で使用されます。時間領域は、時間式1-5によって定義されます。
時間式 1: | 時間式 2: | 時間式 3: | 時間式 4: | 時間式 5: | |
数式 1: | 1000 | 2000 | 3000 | 1000 | 1000 |
数式 2: | 1000 | 2000 | 3000 | 2000 | 2000 |
数式 3: | 1000 | 2000 | 3000 | 3000 | 3000 |
| 1000 | 2000 | 3000 | N/A | 1000 |
| 1000 | 2000 | 3000 | N/A | 2000 |
| 1000 | 2000 | 3000 | N/A | 3000 |
ユーザー情報の取得
レポートのニーズに応じて、ログインユーザーの情報を取得することができます。
関数 | 説明 | レスポンス例 |
---|---|---|
String getSignedUserName() | 現在サインインしているユーザーの名前を返します。 | John |
String getSignedUserSurname() | 現在サインインしているユーザーの名字を返します。 | Smith |
String getSignedUserEmail() | 現在サインインしているユーザーのメールアドレスを返します。 | support@belladati.com |
String getSignedUser() | 現在サインインしているユーザーのユーザー名を返します。 | JohnSmith |
String getSignedUserTimezone() | 現在サインインしているユーザーのタイムゾーンを、文字列として返します。 | Europe/Prague |
Double getSignedUserTimezoneOffset() | 現在サインインしているユーザーのタイムゾーンオフセットを、数値として返します | 2 |
String getSignedUserAdditionalInfo() | 現在サインインしているユーザーの追加情報を返します。 | Employee |
Double getSignedUserID() | 現在サインインしているユーザーのIDを返します。 | 35 |
Strung getSignedUserLanguage() | 現在サインインしているユーザーの選択言語を返します。 | en |
リストと配列の使用
BellaDatiは
https://docs.oracle.com/javase/7/docs/api/java/util/Arrays.html のすべての配列と
https://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/ArrayUtils.html のArrayUtils
に対応しています。
構文: 最初にパッケージの名前を定義してから、目的の方法を使用します。
例:
def int[] a = [1,2,3]
a = ArrayUtils.add(a, 0)
Arrays.sort(a)
return a[3]