Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Sv translation
languageen
Note

It is recommended to get familiar with crossValue, memberValue and filter function before proceeding with this tutorial.

CrossValue function is used to access Indicators from other Data Sets. Since BellaDati 2.9.2, it is also possible to access Attributes by using function such as lastValue() of firstValue().

It receives two parameters:

  1. Cube name
  2. Indicator name

Following example returns Students count from Results data set.

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

Access cross reference function from Formulas help to predefine Cube name.

Cross Reference with and without Drill-down

When cross-referencing values, BellaDati does take in consideration applied drill-downs. That means both data sets need to have the same attribute (same code) and same members.

To display value without drill-down, use the cross value in combination with the function withoutDrillDown. That will display same value for each member.

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

The same also applies to date and time drill-downs and function withoutDateTime.

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

In some cases the members might be the same but the attribute code might be different. In that case you need to explicitelly tell BellaDati, which attribute from the referenced data set should be used.

You can achieve this by specifying memberIdentifier as second parameter of crossValue functions. You need to construct you own string with memberValue.

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

In this example L_COUNTRY_REF is the code of attribute in referenced data set and memberValue is value of current member (name of country).

Info

This will also automatically handle drill-down paths.

Cross Reference with Filter

BellaDati also does not take in consideration filters applied throught view settings. Therefore, you need to explicitelly tell BellaDati in formula definition which filters and how do you want to use them.

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

 

Filter can be defined also directly inside the crossValue function:

Code Block
crossValue('CROSS','[L_ATT1="aaa"]','M_CROSS')

Multiple conditions can be combined by using the plus sign:

Code Block
crossValue('CROSS','[L_ATT1="aaa"]'+'[L_ATT2="bbb"]','M_CROSS')
Note

Please note that the value of the filter has to be String, even when it is a numerical value.

Example: crossValue('dataset','[L_MONTH="'+month(minus(date(contextDay()),'months',1)).toString()+'"]','M_INDICATOR')

 

Cross Reference with Date

When filtering date, date attribute must be in format 'yyyy-MM-dd'.

Code Block
filter("L_DATE in ('2015-01-01')"){  
	crossValue('CUBE_RESULTS.RESULTS','M_MEASURE')
}

filtered date can also defined inside the crossValue function:

Code Block
crossValue('CUBE_RESULTS.RESULTS','[L_DATE={2015-01-01}]','M_MEASURE')

You can find more about filters and their combinations in Filtering in Formulas .

Cross-Referencing attributes

Since BellaDati 2.9.2, it is also possible to access Attributes by using operators such as LASTVALUE or FIRSTVALUE.

Code Block
crossValue('COUNTIES','L_REGION_LASTVALUE')

Next Steps

Sv translation
languageja
Note

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

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

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

  1. キューブ名
  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')

次に

Sv translation
languagede


Note

Es wird empfohlen, sich mit den Funktionen crossValue, memberValue und Filter vertraut zu machen, bevor Sie mit diesem Tutorial fortfahren.

Die CrossValue-Funktion ermöglicht den Zugriff auf Indikatoren aus anderen Datensätzen. Seit BellaDati 2.9.2 ist es auch möglich, auf Attribute zuzugreifen, indem man eine Funktion wie lastValue() von firstValue() verwendet.

Es empfängt zwei Parameter:

  1. Name des Cubes
  2. Name des Indikators

Nachfolgend werden die Studenten aus dem Ergebnisdatensatz gezählt.

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

Der Zugriff auf die Querverweisfunktion aus Formeln hilft bei der Vorgabe des Cube-Namens.

Querverweis mit und ohne Drill-Down

Bei der Gegenüberstellung von Werten berücksichtigt BellaDati die angewandten Drill-Downs. Das bedeutet, dass beide Datensätze das gleiche Attribut (gleicher Code) und dieselben Elemente aufweisen müssen.

Um den Wert ohne Drill-Down anzuzeigen, verwenden Sie den Kreuzwert in Kombination mit der Funktion ohne Drill-Down. Dadurch wird für jedes Wert der gleiche Wert angezeigt.

 

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

In einigen Fällen können die Werte gleich sein, aber der Attributcode kann unterschiedlich sein. In diesem Fall müssen Sie BellaDati ausdrücklich mitteilen, welches Attribut aus dem referenzierten Dataset verwendet werden soll.

Dies erreichen Sie, indem Sie memberIdentifier als zweiten Parameter von crossValue-Funktionen angeben. Du musst deinen eigenen String mit memberValue erstellen.

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

In diesem Beispiel ist L_COUNTRY_REF der Code des Attributs im referenzierten Dataset und memberValue der Wert des aktuellen Werts (Name des Landes).

Info

Dadurch werden auch Drill-Down-Pfade automatisch verarbeitet.

Querverweis mit Filter

BellaDati berücksichtigt auch keine Filter, die über die Einstellungen der Ansicht angewendet werden. Daher müssen Sie BellaDati in der Formeldefinition explizit mitteilen, welche Filter und wie Sie sie verwenden wollen.

Code Block
filter("L_PASS_RESULT in ('" + memberValue() + "') AND L_PASS_SUBJECT in ('Math')"){  
	crossValue('CUBE_RESULTS.RESULTS', 'L_STUDENT_COUNT')
}

Der Filter kann auch direkt in der crossValue-Funktion definiert werden:

Code Block
crossValue('CROSS', '[L_ATT1="aaa"]','M_CROSS')

Mehrere Bedingungen können mit dem Pluszeichen kombiniert werden:

Code Block
crossValue('CROSS', '[L_ATT1="aaa"]'+'[L_ATT2="bbb"]','M_CROSS')
Note

Bitte beachten Sie, dass der Wert des Filters String sein muss, auch wenn es sich um einen numerischen Wert handelt.

Beispiel: crossValue('dataset','[L_MONTH="'+month(minus(date(contextDay()),'months',1)).toString()+'"]','M_INDICATOR')

 

Querverweis mit Datum

Beim Filtern von Datum muss das Datumsattribut im Format'yyyyyyy-MM-dd' vorliegen.

Code Block
filter("L_DATE in ('2015-01-01')"){  
	crossValue('CUBE_RESULTS.RESULTS', 'M_MEASURE')
}

gefiltertes Datum kann auch innerhalb der crossValue-Funktion definiert werden:

Code Block
crossValue('CUBE_RESULTS.RESULTS', '[L_DATE={2015-01-01}]', 'M_MEASURE')

Mehr über Filter und deren Kombinationen finden Sie unter Filtern in Formelns.

Cross-Referenzierende Attribute

Seit BellaDati 2.9.2 ist es auch möglich, auf Attribute zuzugreifen, indem man Operatoren wie LASTVALUE oder FIRSTVALUE verwendet.

Code Block
crossValue('COUNTIES', 'L_REGION_LASTVALUE')

Nächste Schritte