Note |
---|
このチュートリアルに進む前に、crossValue、memberValue、フィルター機能を十分参照することをお勧めします。 |
CrossValue関数は、他のデータセットのインジケータにアクセスするために使用されます。BellaDati 2.9.2以降、firstValue()や、lastValue()などの関数を使用して属性にアクセスすることもできます。 次の2つのパラメーターを受け取ります: - キューブ名
- インジケータ名
次の例は、結果データセットから生徒数を返します。 Code Block |
---|
crossValue('CUBE_RESULTS.RESULTS', 'L_STUDENT_COUNT')
|
Tip |
---|
数式ヘルプから事前定義されたキューブ名への相互参照関数にアクセスします。 |
ドリルダウンあり/なしの相互参照値を相互参照する場合、BellaDatiは適用されたドリルダウンを考慮します。つまり、両方のデータセットに同じ属性(同じコード)と同じメンバーが必要です。 ドリルダウンなしで値を表示するには、クロス値をwithoutDrillDown関数と組み合わせて使用します。これにより、各メンバーに同じ値が表示されます。 Code Block |
---|
withoutDrillDown() {
crossValue('CROSSVALUETEST2.CROSSVALUETEST2','M_GDP')}
|
同じことは、日付と時刻のドリルダウンとwithoutDateTime関数にも当てはまります。 Code Block |
---|
withoutDateTime() {
crossValue('CROSSVALUETEST2.CROSSVALUETEST2','M_GDP')}
|
場合によっては、メンバーは同じかもしれませんが、属性コードは異なるかもしれません。その場合、参照データセットのどの属性を使用すべきかをBellaDatiに明示的に伝える必要があります。 これを実現するには、crossValue関数の2番目のパラメーターとしてmemberIdentifierを指定します。memberValueで独自の文字列を作成する必要があります。 Code Block |
---|
crossValue('CROSSVALUETEST2.CROSSVALUETEST2', '[L_COUNTRY_REF="'+memberValue()+'"]','M_GDP')
|
この例では、L_COUNTRY_REFは参照されるデータセットの属性コードであり、memberValueは現在のメンバー(国名)の値です。
Info |
---|
これにより、ドリルダウンパスも自動的に処理されます。 |
フィルターありの相互参照BellaDatiは、ビュー設定全体に適用されるフィルターも考慮しません。従って、式の定義でBellaDatiにどのフィルターを使用し、どのように使用するかを明示的に指示する必要があります。 Code Block |
---|
filter("L_PASS_RESULT in ('"+ memberValue()+"') AND L_PASS_SUBJECT in ('Math')"){
crossValue('CUBE_RESULTS.RESULTS','L_STUDENT_COUNT')
}
|
Code Block |
---|
filter("L_DATE is not NULL"){
crossValue('DATASET','[L_NAME="'+memberValue('L_USERNAME')+'"]','L_USERNAME_DCOUNT')
} |
フィルターは、crossValue関数内でも直接定義できます: Code Block |
---|
crossValue('CROSS','[L_ATT1="aaa"]','M_CROSS') |
プラス記号を使用して、複数の条件を組み合わせることができます: Code Block |
---|
crossValue('CROSS','[L_ATT1="aaa"]'+'[L_ATT2="bbb"]','M_CROSS') |
Note |
---|
数値であっても、フィルターの値は文字列でなければならないことに注意してください。 例: crossValue('dataset','[L_MONTH="'+month(minus(date(contextDay()),'months',1)).toString()+'"]','M_INDICATOR') |
日付ありの相互参照日付をフィルタリングする場合、日付属性の形式は「yyyy-MM-dd」でなければなりません。 Code Block |
---|
filter("L_DATE in ('2015-01-01')"){
crossValue('CUBE_RESULTS.RESULTS', 'M_MEASURE')
} |
フィルター処理された日付は、crossValue関数内でも定義できます: Code Block |
---|
crossValue('CUBE_RESULTS.RESULTS', '[L_DATE={2015-01-01}]', 'M_MEASURE') |
フィルターとその組み合わせの詳細については、Filtering in Formulasを参照してください。 相互参照属性BellaDati 2.9.2以降、LASTVALUEやFIRSTVALUEなどの演算子を使用して属性にアクセスすることもできます。 Code Block |
---|
crossValue('COUNTIES','L_REGION_LASTVALUE') |
次に |