@XREF
@XREF計算関数は、別のEssbaseキューブからの値を計算に組み込めるようにします。
次の用語が@XREFを説明するために使用されています。
-
データ・ターゲット: 現在の計算が実行されているキューブ(つまり、@XREF呼び出しが開始されたキューブ)。
-
データ・ソース: @XREFによって問い合されるキューブ。このキューブはリモート(つまり、データ・ターゲットとは異なるマシン上)にある可能性があります。
-
視点: データ・ターゲットで現在計算されているメンバーの組合せ(つまり、計算の左側を識別するメンバーの組合せ)。
@XREF関数は、データ・ソースから値を取得して、データ・ターゲットの計算に使用します。@XREFは、メンバーとディメンションのマッピング制限を課しません。つまり、データ・ソースとデータ・ターゲットのアウトラインが異なる場合があります。
構文
目標に応じて、この関数を呼び出す方法は複数あります。
リモート・キューブからの値を組み込むには、次を使用します。
@XREF (locationAlias [, mbrList])
別のアプリケーションとキューブからの値を同じEssbaseインスタンスに組み込むには、次を使用します。
@XREF (appname, dbname [, mbrList])
パラメータ
- locationAlias
-
データ・ソースのロケーション別名。ロケーション別名は、データ・ソースを識別する記述子です。ロケーション別名は、ソースとターゲットが同じEssbaseインスタンス上にある場合は必要ありません。
使用する場合は、計算スクリプトを実行するキューブにロケーション別名を設定する必要があります。ロケーション別名はデータベース管理者によって設定され、データ・ソースのサーバー、アプリケーション、データベース、ユーザー名、パスワードを指定します。
- mbrList
-
オプション。@XREF問合せを修飾するメンバー名のカンマ区切りのリスト。mbrListに指定したメンバーは、データ・ターゲットの現在の視点のメンバーに加えて、データ・ソースに送信されます。次に、データ・ソースは、優先順位を使用して、メンバーの組合せを作成します。
-
mbrListで指定したメンバー
-
現在の視点でのメンバー
-
データ・ソースの不特定のディメンションの最上位メンバー
mbrListパラメータは、(1)データ・ターゲットの視点を変更するか、(2)データ・ソースの特定の視点を定義します。たとえば、次の式はデータ・ターゲットの視点を変更します。
2003(2003->Jan->Inventory = @XREF(sourceDB,Dec);)
データ・ソース(sourceDB)のキューブに2002年のデータのみが含まれている場合、この式は2003年1月の在庫を2002年12月の在庫の値に設定します。
次の式は、データ・ターゲットに特定の視点を定義します。
Jan = @XREF(sourceDB,January);
データ・ターゲットにメンバーJanが含まれ、データ・ソース(sourceDB)にメンバーJanuaryが含まれているとします。この式は、データ・ターゲット(Jan)のメンバーをデータ・ソース(January)の対応するメンバーにマップし、sourceDBからJanuaryを取得します。
mbrListパラメータの詳細は、「ノート」を参照してください。
-
- appname, dbname
- アプリケーションとキューブ名。Essbaseインスタンスが1つしかないデプロイメントにのみ使用します。
ノート
-
データ・ターゲットにサインインし、データ・ソースでプロビジョニングする必要があります。
-
mbrListで指定したメンバーがデータ・ソースに存在しない場合、エラーが返されます。
-
データ・ソースで問い合されるデータ・セルの数は、データ・ターゲットで予期されるデータ・セルの数と一致する必要があります。
-
メンバー・リストには、複数のメンバーを返す関数を含めることはできません。たとえば、次の式は無効です。
West = @XREF(SourceDb, @LEVMBRS(Market,0));
-
メンバー・リストに範囲を含めることはできません。たとえば、次の式は無効です。
West = @XREF(SourceDb, Jan:Mar);
-
mbrListには属性メンバーを含められます。たとえば、データ・ソースが色属性に基づいて製品を分類する場合、次の式は、すべての赤い製品の売上高の合計を計算し、その結果をメンバーRedThingsに割り当てます。
RedThings = @XREF(SourceDb, Sales, Red);
-
mbrListには、属性演算子を含められます。たとえば、次の式は、RedThingsをすべての赤い製品の平均売上高として計算します。
RedThings = @XREF(SourceDb, Sales, Red, Average);
-
@XREFは、すべてのタイプのメンバーに問合せを実行できます。たとえば、データ・ソースから取得されるメンバーは、属性メンバーだけでなく、動的計算メンバーにもなります。動的計算と属性計算に適用されるすべてのパフォーマンスの考慮事項は、動的メンバーと属性メンバーに依存する@XREF問合せにも適用されることに注意してください。
-
@XREF計算の過程で、ソース・データベースのデータが変更される可能性があります。@XREFには、計算の開始後に行われた変更は組み込まれません。
-
@XREFはトップダウン式です。トップダウン式の詳細は、ボトムアップ計算とトップダウン計算を参照してください。
-
データ・ソースにもデータ・ターゲットにも存在しないメンバーの場合、@XREFは、値#M1でなく、最上位ディメンションの値を返します。
-
@PARENTを@XREF内で使用する場合、@NAME内にある必要があります。例:
COGS=@XREF(Sample, @NAME(@PARENT(Product)),Sales);
-
@XREFを含む並列計算を実行する場合、使用するように指定したスレッドの数が、構成されたSERVERTHREADSの数よりも多いと、アプリケーションはタイムアウトになります。
例
この例では、次の2つのデータベースについて考えます。
Main Database
Year
Qtr1
Qtr2
Measures
Sales
Units
Product
100
100-10
100-20
Market
East
West
Scenario
Budget
Forecast
Inflation Rates Database
Year
Qtr1
Qtr2
Assumptions
Inflation
Deflation = Inflation * .5 (Dynamic Calc)
Country
US
Canada
Europe
次の式はMain Databaseに関連付けられています。
Units = Units * @XREF(InflatDB,Inflation,US);
ここで、InflatDBはInflation Rates Databaseのロケーション別名であり、Inflationは、データ値がInflatDBから取得されるメンバーです。
この例では、Essbaseは次のメンバーの組合せを計算します。
Units->Qtr1->100-10->East->Budget = Units->Qtr1->100-10->East->Budget * Inflation->Qtr1->US
Units->Qtr2->100-10->East->Budget = Units->Qtr2->100-10->East->Budget *Inflation->Qtr2->USなど。