Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Sv translation
languageja
Note

このチュートリアルに進む前に、crossValuememberValueフィルター機能を十分参照することをお勧めします。

CrossValue機能は他の関数は、他のデータセットからインジケータにアクセスするときに使用されます。インジケータにアクセスするために使用されます。BellaDati 2.9.2以降、firstValue()、lastValue()などの関数を使用して属性にアクセスすることもできます。

次の2つのパラメーターを受け取ります2つのパラメーターを受け取ります:

  1. キューブ名
  2. インジケータ名

以下の例は次の例は、結果データセットから生徒数を返します。

Code Block
crossValue('CUBE_RESULTS.RESULTS', 'L_STUDENT_COUNT')
Tip

数式のヘルプから他所参照機能にアクセスし、キューブ名を定義してください。

他所参照、ドリルダウンの有無

値を他所参照する際、BellaDatiは適用したドリルダウンを考慮します。つまりは、両方のデータセットは同じ属性(同じコード)と同じメンバーでなくてはいけません。

ドリルダウンなしで値を表示するには、withoutDrillDown機能との組み合わせでクロス値を使用してください。これでそれぞれのメンバーに同じ値が表示されます。

数式ヘルプから事前定義されたキューブ名への相互参照関数にアクセスします。

ドリルダウンあり/なしの相互参照

値を相互参照する場合、BellaDatiは適用されたドリルダウンを考慮します。つまり、両方のデータセットに同じ属性(同じコード)と同じメンバーが必要です。

ドリルダウンなしで値を表示するには、クロス値をwithoutDrillDown関数と組み合わせて使用します。これにより、各メンバーに同じ値が表示されます。

Code Block
withoutDrillDown() { 
crossValue('CROSSVALUETEST2.CROSSVALUETEST2','M_GDP')}

同じことは、日付と時刻のドリルダウンとwithoutDateTime関数にも当てはまります。

Code Block
withoutDateTime
Code Block
withoutDrillDown() { 
crossValue('CROSSVALUETEST2.CROSSVALUETEST2', 'M_GDP')}


メンバーが同じであっても属性コードが異なる場合があります。この場合BellaDatiに、参照データセットのどの属性を使用するかを明確に伝えてください。

場合によっては、メンバーは同じかもしれませんが、属性コードは異なるかもしれません。その場合、参照データセットのどの属性を使用すべきかをBellaDatiに明示的に伝える必要があります。

これを実現するには、crossValue関数の2番目のパラメーターとしてmemberIdentifierを指定します。memberValueで独自の文字列を作成する必要があります。以上の工程はcrossValue機能の2番目のパラメーターとしてmemberIdentifierを特定することで実行できます。ユーザー自身がmemberValueで自身のストリングを構成する必要があります。

Code Block
crossValue('CROSSVALUETEST2.CROSSVALUETEST2', '[L_COUNTRY_REF="'+memberValue()+'"]','M_GDP')

この例では、Lこの例では、L_COUNTRY_REFは参照データセットの属性コードで、memberValueは現在のメンバー(国名)の値です。REFは参照されるデータセットの属性コードであり、memberValueは現在のメンバー(国名)の値です。

Info

これは自動的にドリルダウンコースを処理します。これにより、ドリルダウンパスも自動的に処理されます。

フィルターで他所参照

フィルターありの相互参照

BellaDatiは、ビュー設定全体に適用されるフィルターも考慮しません。従って、式の定義でBellaDatiにどのフィルターを使用し、どのように使用するかを明示的に指示する必要があります。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')

フィルターとその組み合わせに関するさらなる詳細は、数式での絞込みをご覧下さい。

次に

...