この項の内容:
この章のすべてのレポート・スクリプトの例は、Sample.Basicデータベースに基づいています。
『Oracle Essbaseテクニカル・リファレンス』(レポート・コマンドの構文と多数のレポート・スクリプトの例)
ページ、列および行に対するメンバーの組合せを指定する抽出コマンドを使用して、レポートを作成します。
抽出コマンドは、データベースから抽出された生データ・レコードの選択、向き、グループ化および配列を指定します。これらのコマンドは、次元名かメンバー名のいずれか、またはキーワードに基づいており、名前は大なり記号(>)で始まります。
抽出コマンドは、その抽出コマンドが出現した行からレポートの最後まで、レポートに適用されます。別の抽出コマンドがレポート内の後続の行で出現する場合、その抽出コマンドは前のコマンドを上書きします。
フォーマット・コマンドを使用して、レポートの外観を指定したり、データ値の表示を制御できます。フォーマットされたデータ値は、抽出コマンドとレポート・コマンドの組合せに基づいて、スクリプトの実行時にレポートに表示されます。
フォーマット・コマンドでは、レポートのフォーマットと表示形式をカスタマイズし、レポート時間の計算を作成できます。フォーマット・コマンドは、通常、中カッコ({ })で囲まれています。ただし、一部のフォーマット・コマンドは小なり記号(<)で始まります。
フォーマット・コマンドはレポート・スクリプト内にグローバルに適用されるか、メンバーに固有であるかのどちらかです。
レポートを作成するには、レイアウト、メンバー選択およびフォーマットを定義するコマンドをレポート・スクリプト・エディタで入力します。スクリプトのそれぞれの要素は、読みやすくするために色分けされます。入力時にオートコンプリートを使用可能にして、スクリプトを対話式に作成できます。Oracle Essbase Administration Services Online Helpの「レポート・スクリプト・エディタについて」を参照してください。
レポート・スクリプトを書く場合、次のガイドラインに従います:
読みやすくするために、コマンドを1つ以上のスペース、タブまたは新しい行で区切ります。レポート処理は、余分な空白行、スペース、タブの影響を受けません。
コマンドは大文字または小文字で入力します。コマンドでは大文字と小文字が区別されません。データベース・アウトラインで大文字と小文字が区別される場合、レポート・スクリプトのメンバーはそのアウトラインに合わせる必要があります。
レポート処理を開始するには、感嘆符(!)レポート出力コマンドまたは1つ以上の連続する数値を入力します。同じレポート・ファイル内に、1つ以上のレポート・スクリプトを、それぞれの!コマンドで終了させて配置することができます。
1組の中カッコ内で複数のフォーマット・コマンドをグループ化できます。たとえば、次のフォーマットは同じです:
{UDATA SKIP} {UDATA} {SKIP}
重複するメンバー名。修飾メンバー名として入力する必要があります(たとえば、"[2006].[Qtr1]")。
名前に、表90にリストされる文字が含まれる場合:
フォーマット・コマンドの前にアンダースコア、等号またはハイフンが3つ以上あると、レポート・エクストラクタでは、これらの文字が無関係の下線付き文字であるとみなされ、無視されます。たとえば、==={SKIP 1}などです。
//(ダブル・スラッシュ)を使用してコメントを記述します。コメントに続く行の内容はすべて、レポート・ライターでは無視されます。コメントの各行はダブル・スラッシュで始める必要があります。これによって、複数の行で構成されるコメントを追加できます。
コマンド名を短縮するときは注意してください。コマンド名は同じ文字で始まることが多いので、確実に特定できる短縮形を使用しないと、予期しない結果が生じることがあります。
レポートは、多次元データの2次元の表示です。ページ・レイアウト・コマンドを使用して、ネストした列または行のグループとして定義された追加の次元をページに取り込んだり、追加のページをレポートに取り込んだりできます。
ページ・レイアウトは、ページの列と行を構成する見出しで構成されます。ページ、行および列データの抽出コマンドを特定のメンバー選択と組み合せて、レポートの基本レイアウトを定義します。
ページ・レイアウトの各構成要素は、次の異なるフォーマット・コマンドを持ちます:
<PAGE <COLUMN <ROW
さらに、<ASYMと<SYMコマンドでは、列次元メンバー・リストのデフォルトの解釈方法を上書きして、非対称か対称のレポート・フォーマットを生成します。
ページ、列および行の見出しのフォーマットを参照してください。
<PAGE (Product, Measures) <COLUMN (Scenario, Year) Actual <ICHILDREN Qtr1 <ROW (Market) <IDESCENDANTS East !
Product Measures Actual Jan Feb Mar Qtr1 ======== ======== ======== ======== New York 512 601 543 1,656 Massachusetts 519 498 515 1,532 Florida 336 361 373 1,070 Connecticut 321 309 290 920 New Hampshire 44 74 84 202 East 1,732 1,843 1,805 5,380
属性次元のメンバーを使用して、ページ、列および行見出しを作成できます。
レポート・スクリプトの例:
<PAGE (Measures,Caffeinated) Profit <COLUMN (Year,Ounces) Apr May "12" <ROW (Market,"Pkg Type") Can <ICHILDREN East !
Profit Caffeinated 12 Scenario Apr May ======== ======== New York Can 276 295 Massachusetts Can 397 434 Florida Can 202 213 Connecticut Can 107 98 New Hampshire Can 27 31 East Can 1,009 1,071
表91にリストされているコマンドを使用して、レポートの見出しを次のように変更できます:
表 91. レポート・ライター・コマンド: 見出し
デフォルトの見出しのかわりに、レポートの各ページの先頭またはHEADINGコマンドの直後に表示されるカスタム・ページ見出しを作成します。ENDHEADINGコマンドを使用して、カスタム見出しの終わりを指定します。 | |
ページ見出し、すなわちデフォルトの見出しまたはSTARTHEADINGとENDHEADINGコマンドで定義された見出しのどちらかを表示します。 | |
ページ、列および行のフォーマットの抑制を参照してください。
Essbaseレポートには、対称または非対称の列グループを入れることができます。Essbaseでは、選択したメンバーに基づいて列グループの対称性を自動的に決定します。
次のような対称型レポートでは、同じメンバーのグループが繰り戻されているのが特徴です。
East West Budget Actual Budget Actual Q1 Q2 Q3 Q1 Q2 Q3 Q1 Q2 Q3 Q1 Q2 Q3
次のような非対称型レポートでは、ネストされたメンバーのグループの内容が異なっている(少なくとも1つのメンバーが異なる)のが特徴です。メンバーの数が異なる場合と、メンバーの名前が異なる場合があります。
East West Budget Actual Budget Q1 Q2 Q3 Q1 Q2 Q3 Q1 Q2 Q3
デフォルトでは、Essbaseでは対称型レポートを作成します。ただし、すべての列次元に同じ数のメンバーを選択した場合を除きます。
非対称型レポートの例は、『Oracle Essbaseテクニカル・リファレンス』の「レポート・スクリプトの例」ページにある「サンプル13: 非対称列の作成」を参照してください。
Essbaseによる対称性の評価は、すべての順序付け、列の制限または計算済列の結果の適用よりも先に行われます。
<SYMと<ASYMコマンドを使用して、レポート用にEssbaseによって選択されるデフォルトの列グループを上書きできます。<SYMと<ASYMは、レポートでこのコマンドの後に続くメンバー選択コマンドに影響します。
フォーマット・コマンドは、通常は、中カッコ({ })で囲まれ、最終レポートのデータとラベルのフォーマットを定義します。このコマンドは、グローバルかメンバー専用のいずれかに設定できます。
グローバル・コマンドは、レポート・スクリプト・ファイル内で出現したときに実行されて、レポート・ファイルの終わりまで、または別のグローバル・コマンドに置き換わるまでその効果が持続します。
たとえば、{SUPMISSINGROWS}コマンドでは、欠落した値のみを含むレポート・スクリプト・ファイル内のすべての行を抑制します。
メンバー専用コマンドは、レポート・スクリプトで出現したときに実行され(通常は、レポート・スクリプトの次のメンバー)、そのメンバーにのみ適用されます。メンバーに添付されているフォーマットは、そのメンバーが処理される前に実行されます。
たとえば、{SKIP}コマンドを使用すると、レポート・スクリプトの行次元間で指定した行数がスキップされます。別の行で行をスキップする場合には、SKIPコマンドを再び使用する必要があります。
複数のフォーマット・コマンドを使用して、最終レポートのページの外観を設計できます。参照:
例は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。
表92にリストされているコマンドを使用して、レポート・スクリプトの次のページ仕様を設定できます:
レポート・スクリプトには、表93にリストされているコマンドを使用して、次のタイプの改ページを設定できます:
列と行のフォーマット・コマンドにより、特殊タイプのフォーマット設定コマンドを構成します。
列フォーマット・コマンドの指定は、目的のフォーマットに従って、適用する列の前または後ろに置くことができます。
たとえば、Sample.Basicデータベースに基づいている次のスクリプトでは、最初の{DECIMAL}コマンドは2つの列(ActualとBudget)が設定された後に処理されます。ただし、この{DECIMAL}コマンドは、まだ存在しない列3を参照しています。Essbaseでは、レポートを3つの列に動的に拡大することでこのコマンドに対応します。レポートの指定が6つの列に拡大すると、{DECIMAL}のフォーマットは列3と6(および3のすべての倍数)に適用されます。
Essbaseでは、別の次元が追加されたときに、前の列次元グループの繰返しが発生し、フォーマットも同様に繰り返すという前提で、このパターン拡張を実行します。2番目の{DECIMAL}フォーマット・コマンドは、6つの列の作成後に出現するので、列1と4にのみ適用されます。
レポート・スクリプトの例:
<PAGE (Measures, Market) Texas Sales <COLUMN (Scenario, Year) Actual Budget {DECIMAL 2 3 } Jan Feb Mar {DECIMAL 1 1 4 } <ROW (Product) <DESCENDANTS "100" !
Sales Texas Actual Budget Jan Feb Mar Jan Feb Mar === === === === === === 100-10 452.0 465 467.00 560.0 580 580.00 100-20 190.0 190 193.00 230.0 230 240.00 100-30 #MISSING #MISSING #MISSING #MISSING #MISSING #MISSING
次のスクリプトは、同じ結果が得られる列フォーマットの2つの方法を示します。最初のスクリプトでは、最初の2つの{DECIMAL}コマンドは、{DECIMAL}コマンドの処理後に、Jan Febが出現したときにフォーマットを配布することで、1番目と3番目の列をフォーマットするように位置付けられています。
レポート・スクリプトの例: フォーマットの配布による列のフォーマット
California Sales <COLUMN (Scenario, Year) Actual Budget Variance {DECIMAL 1 1 } {DECIMAL 2 3 } Jan Feb // {DECIMAL 1 1 4 } These lines are commented; the // {DECIMAL 2 3 6 } Report Extractor ignores them. <ROW (Product) <DESCENDANTS "100" !
2つの{DECIMAL}コマンドは、個々の列1、3、4および6をフォーマットするように位置付けられています。
レポート・スクリプトの例: 直接割当てによる列のフォーマット
<PAGE (Measures, Market) California Sales <COLUMN (Scenario, Year) Actual Budget Variance // {DECIMAL 1 1 } These lines are commented; the // {DECIMAL 2 3 } Report Extractor ignores them. Jan Feb {DECIMAL 1 1 4 7 } {DECIMAL 2 3 6 9 } <ROW (Product) <DESCENDANTS "100" !
Sales California Actual Budget Variance Jan Feb Jan Feb Jan Feb ===== ==== ==== ==== ===== ==== 100-10 678.0 645 840.00 800.0 (162) (155.00) 100-20 118.0 122 140.00 150.0 (22) (28.00) 100-30 145.0 132 180.00 160.0 (35) (28.00)
長すぎて列に収まらないメンバー名は、自動的に切り捨てられます。チルダ文字(~)は、名前の一部が欠けていることを示しています。長いメンバー名は、別名を使用するときによく見られます。
表94にリストされているコマンドを使用して列を変更し、メンバー名全体を表示できます:
表95にリストされているコマンドを使用して、レポートのページ見出し、列および行の表示を抑制できます:
表 95. レポート・ライター・コマンド: ページ見出し、列および行の抑制
列と行の計算によって、データベース・アウトラインに定義されていない追加の計算を作成できます。たとえば、列と行の計算を使用すると、選択したデータ・メンバーに基づいてレポートに追加の列または行を作成したり、追加または既存の列と行に対して計算を実行したりできます。
列と行の計算を含むレポート・スクリプトの例は、『Oracle Essbaseテクニカル・リファレンス』の「レポート・スクリプトの例」ページの「サンプル14: 列の計算」を参照してください。
CALCULATE COLUMNコマンドでは、レポート列の作成、即時計算の実行および新規作成列での計算結果の表示を行います。
表96は、列計算コマンドのリストです:
表 96. レポート・ライター・コマンド: 列計算
レポート・コマンド |
説明 |
---|---|
レポート列を作成し、動的計算を実行し、新規作成列に計算結果を表示します。レポートでの列計算を一時的に使用不可にするには、OFFCOLCALCSコマンドを使用し、計算を再び使用可能にするにはONCOLCALCSコマンドを使用します。 | |
CALCULATE COLUMNは、最大499個のアド・ホック列計算をレポートに追加します。各新しい計算済列は、作成順に既存の列の右側に追加され、次に使用可能な列番号が割り当てられます。これらの列は、列の範囲内のデータの合計または簡単な算術演算子からなる演算式を計算します。
CALCULATE COLUMNコマンドは、標準の算術演算をサポートします。
複数の列に同じ名前を使用した場合、EssbaseではCALCULATE COLUMNコマンドで最後に指定した列のみが作成されます。2番目の名前の先頭に1つのスペース(および3番目の名前の先頭に2つのスペースなど)を使用して、一意の列名を作成します。
または、右側に十分に長い説明テキストを追加して、列幅で切り捨てることもできます。たとえば、名前Q1 ActualとQ1 Budgetを使用して、レポートの表示に影響を与えずに似ている列名を区別できます。列名は、列ヘッダーのスペースがいっぱいになるまで、右揃えで印刷されます。超過する文字は右側で切り捨てられます。
長い列名ラベルを複数の行に分けます。ラベルを分けることができる行の最大数は、レポート指定に指定された列次元の数と同じです。列名を改行するには、改行する場所にチルダ(~)を挿入します。また、行の最大数を使用するには、列次元ごとに少なくとも2つのメンバーを指定する必要があります。
{CALCULATE COLUMN "Year to Date~Actual Total" = 1 : 2} {CALCULATE COLUMN "Year to Date~Budget Total" = 3 : 4}
Sales East Actual Year to Date Budget Year to Date Jan Feb Actual Total Jan Feb Budget Total ===== ====== ============= ====== ====== ============= 400-10 562 560 1,122 580 580 1,702 400-20 219 243 462 230 260 722 400-30 432 469 901 440 490 1,391
原則として、対称型レポートでは、計算済列名のレベルの数が列次元の数よりも少ない場合、各列次元の前のメンバー(左側)が、計算済列名で提供された最上位より上で、計算済列に属するとみなされます。通常のPYRAMIDHEADERSモードが使用されている場合、上位の列メンバーの中央揃えは、計算済列を含めるために右側に移動します。計算済列名と同じレベルの列ヘッダー・メンバーは、新しい計算済列に適用されないので、その中央揃えは移動しません。
BLOCKHEADERSモードが使用されている場合、つまり、列に適用するすべてのメンバーがその列より上で繰り返される場合、列ヘッダー・メンバーの中央揃えを移動するかわりに、メンバーが計算列名のより上位の該当するレベルで繰り返されること以外は、同じルールが適用されます。
非対称型レポートにはメンバー・プロパティを共有する列のグループがありません。このレポートでは、定義されている列レベルの数まで複数レベルの行名を使用できますが、前の列のメンバー・プロパティは、定義されていないレベルに対して自動的に共有されず、使用されません。
列ヘッダー次元の数が必要なレベルの数より少ない場合は、複数行の列ラベルを作成できます。この場合、TEXT、STARTHEADING、ENDHEADINGなどのフォーマット・コマンドを使用して、カスタム見出しを作成します。
レポート内の複数のセクションが異なる数の列を持つため、通常(計算対象外)の列の数がレポート内で変わる場合は、次に示すように、計算済列を識別するために使用される列の番号が変わります:
たとえば、CC1、CC2およびCC3は3つの計算済列名の名前を表しています。通常の列の数が変化する2つの異なるセクションを持つレポートでの列の番号付けは、次のようになります:
internal col # s: 0 1 2 3 4 5 6 7 Jan Feb Mar Apr CC1 CC2 CC3 === === === === === === === Sales 1 3 5 3 22 55 26 Expense 1 2 5 3 23 65 33 same report- new section internal col # s: 0 1 2 3 4 5 Qtr1 YTD CC1 CC2 CC3 === === === === === Sales 2 9 22 57 36 Expense 4 8 56 45 33
2番目のセクションに計算済列を入れない場合、または異なる列計算のセットを必要とする場合、REMOVECOLCALCSコマンドを使用して、古い列計算を消去します。その後、新しい列計算を定義できます。
この例では、3つの列計算のすべては、列1と列2を除き、通常の列への参照は持たないことを前提とします。レポートの2番目のセクションの開始時にCC3の計算が= 1 + 3 + 6である場合、列計算が存在しない列(6)を参照したという内容のエラーが発生します。
行計算では、レポートに要約行を作成します。要約行を使用して、行の範囲内のデータの合計を計算したり、簡単な算術演算子からなる演算式を計算できます。
表97は、行計算コマンドのリストです:
表 97. レポート・ライター・コマンド: 行計算
列を指定するコマンドでは、列の元の順序で決定された有効なデータ列番号を使用する必要があります。
CALCULATE ROWコマンドでは、定数、その他の計算済行および演算子からなる等式として、演算(+、-、*、/またはOFF)を指定できます。等式は、宣言時に評価されます。メンバー名は、CALCULATE ROWコマンドの式ではサポートされません。
演算子を指定した場合、その演算子は後続の出力行に適用され、その結果は計算済行に保管されます。演算子の指定は、一連の行を集約して、小計または合計を得るときに便利です。演算子をリセットするには、SETROWOPを使用します。CALCULATE ROWコマンドで等式も演算子も指定しなかった場合、+演算子が指定されたとみなされます。
CALCULATE ROWコマンドは、標準的な算術演算をサポートします。
{ CALC ROW "Total Sales" = "Sales..Group1" + "Sales..Group2" }
フォーマット・コマンドを使用して、最終レポートでのデータの表示方法をカスタマイズできます:
視覚的な手段として、表98にリストされているコマンドで、下線を使用してレポート内の情報のブロックを分割します:
表99にリストされているSUPPRESSコマンドを使用して、最終レポートに表示する必要がないデータを抑制できます:
表 99. レポート・ライター・コマンド: データのフォーマットの抑制
レポート・コマンド |
説明 |
---|---|
ヨーロッパ式の数値の表示(2.000,01は、ヨーロッパ以外の表示では2,000.01)。EUROPEANコマンドを使用すれば、ヨーロッパ式の表示が再び使用可能になります。 | |
SUPPRESSコマンドを使用したフォーマットの抑制の詳細は、ページ、列および行のフォーマットの抑制を参照してください。
インデントを使用して、スクリプトの行レベルに視覚的な目印を設定します。表100は、インデント・コマンドのリストです:
タイトルはユーザー生成のオプションであり、自動的に生成されるページや列見出しおよび行名とは異なり、レポート・ページ上のデータを説明します。
レポートを実行する場合、データを取得できなかった空のデータ・セルや、値がゼロであるセルが、多く存在することがあります。
データ値が見つからない場合、レポートではデータ・セルにデフォルトの#MISSINGラベルを表示します。
#MISSINGラベルをテキスト・ラベルに置き換えるには、スクリプト内の、#MISSINGラベルをテキスト・ファイルに置き換える箇所に、次のコマンドを入力します:
{MISSINGTEXT ["
text
"]}
MISSINGTEXTコマンドをレポート・スクリプトの任意の箇所に置くと、そのコマンドはスクリプト全体に適用されます。
レポートに#MISSINGラベルが表示されないような設定もできます。SUPPRESSコマンドを使用したラベルの抑制方法は、データのフォーマットの抑制を参照してください。 |
レポート内に空白を追加すると、合計などの重要な情報が読者の目を引きます。表101は、空白の追加に使用するコマンドのリストです:
表102にリストされているコマンドを使用して、最終レポートのデータ表示方法を変更できます:
最終レポートのデータは、選択したメンバーとその表示順序に基づいて表示されます。また、条件付き取得を使用して、メンバーの選択とソートをさらに細かく指定できます。
メンバー選択コマンドは、兄弟、世代、レベルなどのデータベース・アウトラインの関係に基づいてメンバーの範囲を選択する抽出コマンドです。メンバー選択コマンドを使用すれば、メンバー選択コマンドが基準とするメンバー名を変更しないかぎり、アウトラインへの変更を自動的にレポートに反映できます。属性次元をメンバー選択コマンドに入れることができます。
表103は、メンバー選択コマンドのリストです:
世代名とレベル名の選択コマンドでは、次のいずれかのアイテムに基づいて、特定のレベルまたは世代のメンバーを識別します:
世代名とレベル名を使用すると、アウトラインへの変更が自動的にレポートに反映されます。独自の世代名とレベル名を定義するか、Essbaseに用意されているデフォルト名を使用できます。世代とレベルを参照してください。
可能な場合は世代名またはレベル名を使用すると、レポートの管理が簡単になります。レポートでメンバー名を指定する必要がないので、メンバー名が変更またはデータベース・アウトラインから削除された場合にレポートを変更する必要がありません。
世代名とレベル名は独立したコマンドです。<DESCENDANTSや<CHILDRENなどのレポート抽出コマンドまたはフォーマット・コマンドでメンバー名のかわりに世代名またはレベル名を使用することはできません。 |
dimensionNameは、メンバーを選択する次元の名前です。
たとえば、Lev1,Yearでは、年次元のすべてのレベル1のメンバーを選択します。
dimensionNameは、メンバーを選択する次元の名前です。
たとえば、Gen2,Yearでは、年次元のすべての世代2のメンバーを選択します。
次の例のレポート・スクリプトでは、デフォルトの世代名Gen2,Yearを使用して、Year次元のメンバーQtr1、Qtr2、Qtr3およびQtr4を含むレポートを生成します:
<PAGE(Product) <COLUMN(Year) <ROW (Measures) {OUTALTNAMES} Cola Gen2,Year Sales Profit !
Cola Market Scenario Qtr1 Qtr2 Qtr3 Qtr4 ======== ======== ======== ======== Sales 14,585 16,048 17,298 14,893 Profit 5,096 5,892 6,583 5,206
重複するメンバー名のアウトライン選択では、表104にリストされているコマンドを使用できます:
データベース・アウトラインで動的メンバーを作成し、識別します。動的メンバーは、レポート・スクリプトの生成など、ユーザーの取得要求時にのみ計算されるメンバーです。時間次元には、特別な動的時系列オプションがあります。動的時系列オプションには、次の予約世代名があります。この世代名は、表105にリストされている、アウトラインの別名テーブルで定義できます:
動的時系列メンバーに対する事前定義の世代名の適用を参照してください。
ブール演算子を使用すれば、レポートで厳密なメンバーの組合せを指定できます。これは、大規模なアウトラインを操作するときに役に立ちます。AND、ORおよびNOTブール演算子を抽出コマンドと組み合せて使用し、レポート・スクリプトでメンバー選択を詳しく指定します。
演算子を使用してブール式を作成するには、スクリプト内の、リンクを使用する箇所に、次のフォーマットを入力します:
<LINK ( extractionCommand [ operator extractionCommand ])
extractionCommandはデータを取得するメンバー選択コマンドであり、operatorはAND演算子またはOR演算子です。
ブール演算子は、UDAやワイルドカードなど、メンバー選択コマンドと一緒に使用できます。LINKコマンドで使用できる有効な抽出コマンドのリストは、『Oracle Essbaseテクニカル・リファレンス』を参照してください。
次の例では、「100」サブツリーにあるすべての菓子製品と、「100-10」と同レベルにあるすべての製品を選択します:
<LINK ((<IDESCENDANTS("100") AND <UDA(Product,Sweet)) OR ONSAMELEVELAS "100"-10")
次の例では、「100」サブツリーにある菓子以外のすべての製品と、「100-10」と同じレベルにあるすべての製品を選択します。
<LINK ((<IDESCENDANTS("100") AND NOT <UDA (Product,Sweet)) OR ONSAMELEVELAS "100"-10")
代替変数は、定期的に変化する情報のグローバル・プレースホルダとして機能します。Administration Services、MaxLまたはESSCMDを使用して、代替変数をサーバーに設定し、各変数に値を割り当てます。その値はいつでも変更でき、レポート・スクリプトへの手動変更を減らすことができます。代替変数を設定するにはデータベース・マネージャ以上の役割が必要です。
たとえば、多くのレポートはレポート期間に依存します。当月に基づいてレポートを生成する場合、毎月レポート・スクリプトを手動で更新する必要があります。サーバーに設定したCurMnthなどの代替変数を使用すれば、各月の割当て値を該当する期間に変更できます。最終レポートを実行すると、Essbaseによって動的に情報が更新されます。
データベース・アウトラインで代替変数を作成および変更する方法は、代替変数の使用を参照してください。先頭の&文字の詳細は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。
variableNameは、サーバー上に設定された代替変数と同じです。
<ICHILDREN &CurQtr
<ICHILDREN Qtr1
代替変数では、レポートを実行するアプリケーションやデータベースからアクセス可能であることが必要です。また、変数名は英数字の組合せであり、最大サイズは制限で指定されています。変数名にスペースと句読点を使用することはできません。 |
レポート・スクリプトを実行すると、Essbaseによって変数名が代替値に置換され、その情報が最終レポートに組み込まれます。
属性を使用して、基本メンバーの1つ以上の特性に基づいて、データを選択し、レポートできます。属性に従って基本次元のメンバーをグループ化および分析できます。また、複数の属性に基づいてクロス集計レポートを実行できます。<ATTRIBUTEコマンドを使用して、属性に関連付けられているすべての基本次元メンバーを選択できます。たとえば、ニューヨークでの12オンス単位のグレープ・ジュースとオレンジ・ジュースの第1四半期の販売量について、Sample.Basicデータベースをクエリーできます。
memberNameは属性次元メンバーの名前です。次に例を示します:
<ATTRIBUTE Bottle
複数の属性次元で同じ名前のメンバーを使用できます。たとえば、属性次元オンスと属性次元年齢で、それぞれ24という名前のメンバーを使用できます。クエリーによって正しい結果が戻されるようにするには、完全な属性次元メンバー名を指定します。次のフォーマットでは、24オンス単位でパッケージされたすべての製品が戻されます:
<ATTRIBUTE Ounces_24
属性タイプは、テキスト、数値、日付、ブールのいずれかにできます。属性タイプの理解を参照してください。
サンプル・レポートについては、『Oracle Essbaseテクニカル・リファレンス』の、サンプル20: メンバー選択での属性の使用に関する項を参照してください。
<WITHATTRコマンドを使用して、1つ以上の属性に関連付けられているすべての基本次元メンバーを選択できます。たとえば、パッケージ・タイプ属性次元のメンバーに関連付けられているすべての製品を表示できます。スクリプト内の、メンバーを選択する箇所に、次の構文を入力します:
<WITHATTR ( attributeDimensionName , " Operator ", Value )
次のコマンドでは、人口属性次元の属性小に関連付けられている、すべての基本次元メンバーが戻されます。
<WITHATTR (Population, "IN", Small)
次のコマンドでは、オンス属性次元の属性32に関連付けられている、すべての基本次元メンバーが戻されます。
<WITHATTR (Ounces, "<", 32)
<WITHATTRコマンドをLINKコマンド内で使用して、次の例に示すようにメンバー選択を細かく指定できます: <LINK ((<WITHATTR (Ounces, "<", 32) AND <WITHATTR ("Pkg Type", "=", Can)) |
サンプル・レポートについては、『Oracle Essbaseテクニカル・リファレンス』の、サンプル21: メンバー選択でのWITHATTRコマンドの使用に関する項を参照してください。
<TODATEコマンドを使用して、特定の日付、特定の日付より前の期間または特定の日付より後の期間の属性データを抽出できます。たとえば、1996年12月10日、1996年12月10日より前、または1996年12月10日より後に発売されたすべての製品に関する情報を抽出できます。<TODATEコマンドは、<WITHATTRコマンド内で使用する必要があります。たとえば、次のフォーマットでは、1996年12月10日に発売されたすべての製品のデータが戻されます。
<WITHATTR ("Intro Date", "=", <TODATE ("mm-dd-yyyy", "12-10-1996")
次のフォーマットでは、1996年12月10日より前に発売されたすべての製品のデータが戻されます。
<WITHATTR ("Intro Date", "<", <TODATE ("mm-dd-yyyy", "12-10-1996")
次のフォーマットでは、1996年12月10日より後に発売されたすべての製品のデータが戻されます。
<WITHATTR ("Intro Date", ">", <TODATE ("mm-dd-yyyy", "12-10-1996")
UDAを使用して、共通の特性に基づいてデータを選択し、レポートできます。UDAは、不均衡な階層(この階層では、次元のメンバーによってメンバー・レベルが異なります)を持つアウトラインからメンバーを選択するときに役に立ちます。色、サイズ、性別、味などの共通のメンバー特性に関するUDAをサーバーに設定できます。サーバーにUDAを設定するにはデータベース・マネージャ権限が必要です。
UDAは属性とは異なります。UDAは、特定の特性に基づいてデータを抽出するために作成するメンバー・ラベルです。ただし、UDAを使用して、データのグループ化、クロス集計レポートの実行、選択したデータの取得を行うことはできません。データ分析では、UDAは属性ほど有効ではありません。
UDAコマンドをブール演算子とともに使用して、レポート・クエリーを細かく指定できます。例は、ブール演算子によるメンバーの選択を参照してください。
UDAの作成も参照してください。
多数のメンバー(たとえば、メンバーが50万程度)が1つのUDAに割り当てられている大規模なアウトライン(たとえば、メンバーが100万以上)では、UDA単位のメンバー・セットのクエリーに長時間かかる可能性があります。クエリーのパフォーマンス改善のため、essbase.cfgでPRELOADUDANAMESPACE構成設定をTRUEに設定します。この場合、アプリケーションのロードに追加メモリーが必要な場合があります。『Oracle Essbaseテクニカル・リファレンス』を参照してください。
UDAに基づいてメンバーを選択するには、スクリプト内の、UDAに基づいてメンバーを選択する箇所で、次のフォーマットを使用します:
<UDA ( dimensionName ," UDAstring ")
dimensionNameは選択するメンバーの次元で、UDAstringはサーバーに設定されているUDAです。次の例では、菓子属性を持つ製品次元のメンバーを選択します。
<UDA (product,"Sweet")
ワイルドカードを使用して、レポート・スクリプトでメンバー、世代またはレベルの名前を選択できます。メンバー名を使用すると、Essbaseによってメンバーとそのメンバーのすべての子孫が検索されます。世代名またはレベル名を指定すると、Essbaseによってその世代またはレベルのメンバーのみが検索されます。
ワイルドカードを使用すると、スクリプトに必要なメンバー情報の量が減るので、スクリプトのメンテナンスが簡単になります。
次の2つのタイプのワイルドカードがレポート・ライターでサポートされています:
末尾ワイルドカードを使用してメンバーを選択するには、スクリプト内の、末尾ワイルドカードを使用してメンバーを選択する箇所で、次のフォーマットを使用します:
<MATCH ( memberName ," character *")
memberNameは選択するメンバーの名前であり、characterは次のメンバーの開始文字です。次のレポート・スクリプトを使用します:
<MATCH (Year,"J*")
パターン照合ワイルドカードを使用してメンバーを選択するには、スクリプト内の、パターン照合ワイルドカードを使用してメンバーを選択する箇所で、次のフォーマットを使用します:
<MATCH ( memberName ,"??? characters ")
memberNameは選択するメンバーの名前であり、charactersは次のメンバーの文字です。次のレポート・スクリプトを使用します:
<MATCH (Product,"???-10")
次のアイテムとともに使用して、レポート用にデータを抽出するときに以降の共有メンバーのインスタンスを非表示にできます:
共有メンバーを抑制して、レポート内の不要なデータ重複を取り除きます。
<SUPSHAREを使用すると、レポート・スクリプトの実行期間中に共有メンバーが非表示になります。共有メンバーを再び表示するには、<SUPSHAREOFFを使用します。
別名を使用すると、レポートが読みやすくなり、読者はメンバー名の意味ではなく、データ値に集中できます。メンバーは、レポートで別名を使用して表示できます。たとえば、メンバー名100-20、100-30ではなく、Diet Cola、Caffeine Free Colaなどのページ名、列名、行名を表示できます。
修飾メンバー名は、重複メンバー・データベースで特定のメンバーを識別するのに役立ちます。重複メンバー名が見つかった場合には、修飾メンバー名を表示できます。たとえば、[State].[New York]と[City].[New York]は、メンバー名New Yorkを一意に識別します。重複メンバー名の詳細は、重複メンバーのアウトラインの作成および使用を参照してください。
表106は、メンバー名表示に使用するコマンドのリストです:
<REPALIAS、<REPALIASMBR、<REPMBRALIAS、<REPMBRおよび<REPQUALMBRは、特定の次元に適用できるフォーマット・コマンドです。これらのコマンドは、お互いを上書きします。たとえば、<REPALIASMBR Productが出現した場合、レポート・ライターではメンバー名の前に別名が表示されます。これ以降のスクリプトで<REPMBRALIAS Productが出現した場合、レポート・ライターでは別名の前にメンバー名が表示されます。重複メンバーのアウトラインの場合、<OUTPUTMEMBERKEYコマンドと表内の他のコマンドの組合せが可能です。メンバー識別子と、メンバー名または別名、あるいはその両方をレポート出力に組み込むことができます。
メンバー名とその別名を組み合せて、レポートにメンバーを表示できます。メンバー名と別名を組み合せることによって、Diet Cola 100-20や100-30 Caffeine Free Colaなどのように、よりわかりやすいページ名、列名および行名を表示できます。
メンバー名と別名を表示するには、レポート・スクリプトで、<REPALIASMBRコマンドまたは<REPMBRALIASコマンドを使用します。
次の例では<REPALIASMBRコマンドを使用して、メンバー名の前に別名を表示します:
Dark Cream 300-10 Measures Actual Jan Feb Mar Qtr1 ======== ======== ======== ======== Market 800 864 880 2,544 Vanilla Cream 300-20 Measures Actual Jan Feb Mar Qtr1 ======== ======== ======== ======== Market 220 231 239 690 Diet Cream 300-30 Measures Actual Jan Feb Mar Qtr1 ======== ======== ======== ======== Market 897 902 896 2,695 Cream Soda 300 Measures Actual Jan Feb Mar Qtr1 ======== ======== ======== ======== Market 1,917 1,997 2,015 5,929
レポート内に含まれるメンバーをソートする場合、メンバーがメンバー選択コマンドによって参照されるか、静的メンバー定義によって参照されるかによって、ソート・コマンドがメンバーに与える影響が異なることに注意してください。レポート・ライター・コマンドは、メンバー名またはデータ値によってメンバーをソートします。
<CHILDRENや<DESCENDANTSなどのメンバー選択コマンドは、データベース・アウトラインで指定された順序でメンバーを選択します。デフォルトでは、メンバー選択コマンドを含んでいるレポートは、データベース・アウトラインの階層順序でメンバーを表示します。ソート・コマンドを使用してソート順序を指定することで、このデフォルトを上書きできます。
ソート・コマンドはメンバー選択コマンドによって選択されたメンバーの順序に影響するので、このコマンドは、適用するメンバー選択コマンドの前に置く必要があります。ソート・コマンドを指定した場合、ソート順序は、別のソート・コマンドによって上書きされるまで維持されます。
ソート・コマンドは、<CHILDRENや<DESCENDANTSなどのメンバー選択コマンドを変更します。ソート・コマンドは、フォーマット中に最終的な行のソートを実行しません。すぐにソートを開始しない場合、および次の選択コマンドの前に必要に応じてソート・コマンドをオフにするために、そのソート・コマンドを上書きする場合は、レポート・スクリプトにソート・コマンドを配置するときに注意が必要です。
表107は、メンバーのソートに使用するコマンドのリストです:
表108にリストされたコマンドを使用して、レポートで条件付き取得とデータのソートを実行できます:
条件付き取得では構成可能な変数が使用されます。バッファのサイズの変更を参照してください。
<RESTRICT、<ORDERBY、<TOPおよび<BOTTOMは、レポート・スクリプトの任意の場所で、任意の順序で使用できます。これらのコマンドを使用するときには、ページ・メンバーまたは列メンバーの前、あるいはページ・メンバーまたは列メンバーに広がる<PAGEコマンドまたは<COLUMNコマンド(たとえば、IDESCENDANTS、ICHILDREN)の前に、すべてのグローバル・スクリプト・フォーマット・コマンドを置きます。
Essbaseでは、次の順にデータを抽出し、制限と配列を適用します:
<TOP、<BOTTOMおよび<ORDERBYコマンドは、そのデータ値によってレポートの出力をソートします。Essbaseでは、最初に<TOPと<BOTTOMを適用し、次に<ORDERBYを適用します。レポートに、(データではなく、メンバーをソートする)<SORTMBRNAMESなどのソート・コマンドがある場合、Essbaseでは、最初にソート・コマンドを適用し、次に<TOPと<BOTTOM、その次に<ORDERBYを適用します。<ORDERBYが最終のソートです。
<RESTRICTコマンドの引数では、行選択の修飾を指定できます。Essbaseでは、修飾された行のみをレポート出力結果に組み込みます。
<RESTRICTでは、行メンバー選択で指定する行の範囲にのみ作用します。
Essbaseでは、左から右に制限を処理します。引数のリストを丸かっこで囲んでグループ化することはできません。
RESTRICT (... (@DATACOLUMN(1) > 300 AND @DATACOLUMN(2) < 600)...)
!コマンドで終了するレポートごとに、<RESTRICTを1つのみ使用します。レポート・スクリプトに複数のレポートが含まれている場合、各<RESTRICTは前のレポートの<RESTRICTを上書きします。例:
RESTRICT (@DATACOLUMN(1) > @DATACOLUMN(2) AND 800 < @DATACOLUMN(3) OR @DATACOLUMN(4) <> #MISSING)
この<RESTRICTコマンドは、操作されると次の構文と同じになります:
RESTRICT (((@DATACOL(1) > @DATACOLUMN(2)) AND (800<@DATACOLUMN(3))) OR (@DATACOLUMN(4) <> #MISSING))
<ORDERBYコマンドは、指定された列のデータ値に従って出力行を配列します。ORDERBYコマンドでオプションの方向引数を使用すると、ASCフラグで昇順を指定し、DESCフラグで降順を指定できます。同じレポートの列ごとに異なるソート方向を指定できます。方向引数を使用しなかった場合、昇順(ASC)がデフォルトで使用されます。
配列する行のセットを特定するには、コマンドで行グループ次元を指定します。デフォルトの行グループは、最も内側の行次元です。
!コマンドで終了するレポートごとに、<ORDERBYを1つのみ使用できます。レポート・スクリプトに複数のレポートが含まれている場合、各<ORDERBYは前のレポートの<ORDERBYを上書きします。
<TOPコマンドと<BOTTOMコマンドでは、レポートで戻される行グループ内で、それぞれ最上位の行値または最下位の列値を持つ修飾行の数を指定します。行グループ・メンバーを指定しなかった場合、最も内側の行グループ次元がデフォルトの行グループになります。
同じレポートで<TOPと<BOTTOMを一緒に使用できますが、レポートごとに使用できる<TOPと<BOTTOMはそれぞれ1つのみです。同時に使用する場合、混乱を防ぐため、2つのコマンドにはその引数と同じデータ列が必要です。<TOPコマンドと<BOTTOMコマンドの結果は、コマンドで指定したデータ列の値に基づいて降順でソートされます。
<TOPと<BOTTOMは、行メンバー選択で指定する行の範囲にのみ作用します。
<ORDERBY、<TOP、<BOTTOMコマンドの任意の組合せがレポート・スクリプトに一緒に存在する場合、行グループ・メンバー(<rowGroupMember>)は同じである必要があります。この制限によって、行グループ内での行のソートと配列に関する混乱を防ぐことができます。
たとえば、このコマンドでは、行グループごとにcol2 (Actual, Qtr2)内に最上位のデータ値を持つ2つの行を戻します:
1- TOP (2, @DATACOLUMN(2))
Sample.Basicデータベースに対してこのコマンドを実行すると、行グループはProductになり、これによって暗黙的に、レポートがFloridaに対して100-10と100-30の製品行を戻し、Maineに対して100-10と100-40の製品行を戻します:
Actual Budget Qtr1 Qtr2 Qtr1 Qtr2 Florida 100-10 570 670 570 650 100-20 235 345 321 432 100-30 655 555 455 865 100-40 342 342 432 234 Maine 100-10 600 800 800 750 100-20 734 334 734 534 100-30 324 321 235 278 100-40 432 342 289 310 New York 100-10 1010 1210 1110 910 100-20 960 760 650 870 100-30 324 550 432 321 100-40 880 980 880 1080 100-50 #MI #MI #MI #MI
この例では、行グループが「market」であるため、レポートごとにcol2 (Actual, Qtr2)内に最上位のデータ値を持つ行を戻します。
2- TOP("market", 3, @DATACOLUMN(2))
New York 100-10 1010 1210 1110 910 100-40 880 980 880 1080 Maine 100-10 600 800 800 750
このコマンドでは、行グループごとにcol2 (Actual, Qtr2)内に最下位のデータ値を持つ2つの行を戻します。
3- BOTTOM ("market", 2, @DATACOLUMN(2))
Maine 100-20 734 334 734 534 100-30 324 321 235 278
<TOPコマンドと<BOTTOMコマンドを使用するときには、その操作が他のコマンドの影響を受けることに注意してください。特に、Essbaseでは、<SUPPMISSING、<SUPZEROSおよび<SUPEMPTYROWSオプションを制限として扱い、これらのオプションを<RESTRICTコマンドの制限とともに抽出された行に適用します。Essbaseでは、<TOPコマンドまたは<BOTTOMコマンドを処理する前、および<ORDERBYコマンドを適用する前に、この制限をデータ行に適用します。
レポートにフォーマット・コマンドが出現すると、そのコマンドに続くメンバーにそのコマンドが付加されます。たとえば、このシーケンスでは、列に下線を引くコマンド{UCOLUMNS}が、その次にくるメンバーに内部で付加されます。スクリプト1では、このコマンドは、「フロリダと仮定すると、市場の最初の子」として説明できる行メンバーに付加されます。
SCRIPT 1 SCRIPT 2 .... .... < ROW Market {UCOLUMNS} {UCOLUMNS } < Florida (row member) <ICHILDREN Market < TOP .... < BOTTOM ....
スクリプト2では、{UCOLUMNS}が行メンバーFloridaに付加されます。Essbaseでは、行メンバーFloridaを持つ行が検出されるたびに、{UCOLUMNS}が実行されます。TOPコマンドまたはBOTTOMコマンドがFloridaを含んでいない行を戻した場合、行に付加されたフォーマット・コマンドが実行されることはありません。
したがって、フォーマットが必ず実行されるように、<COLUMNコマンド、または列メンバーに広がるコマンドの前にすべての汎用フォーマット・コマンドを置くことをお薦めします。ただし、行は<TOPコマンドまたは<BOTTOMコマンドによって抽出されない可能性があるので、行に作用するフォーマット・コマンドは使用しないでください。また、<TOPコマンドと<BOTTOMコマンドとともに<SAVEROWと<CALCULATE ROWを使用しないでください。
データベースに通貨パーティションがある場合は、レポート・スクリプトで通貨換算を計算できます。<CURRENCYコマンドを使用して、出力通貨と通貨タイプを設定します。<CURHEADINGコマンドを使用して、通貨換算の見出しを表示します。
通貨換算アプリケーションの詳細は、通貨換算アプリケーションの構築および換算の実行を参照してください。
表108にリストされているように、C、Visual BasicおよびCグリッドAPIを使用してレポートを生成できます:
説明と構文は、『Oracle Essbase APIリファレンス』を参照してください。