レポート・スクリプトの作成

この項の内容:

抽出コマンドの理解

フォーマット・コマンドの理解

レポート・スクリプトの構文の理解

ページ・レイアウトの設計

フォーマット

メンバーの選択とソート

データ値の制限と順序付け

異なる通貨へのデータの換算

C、Visual BasicおよびグリッドAPIを使用したレポートの生成

この章のすべてのレポート・スクリプトの例は、Sample.Basicデータベースに基づいています。

関連項目:

抽出コマンドの理解

ページ、列および行に対するメンバーの組合せを指定する抽出コマンドを使用して、レポートを作成します。

抽出コマンドは、データベースから抽出された生データ・レコードの選択、向き、グループ化および配列を指定します。これらのコマンドは、次元名かメンバー名のいずれか、またはキーワードに基づいており、名前は大なり記号(>)で始まります。

抽出コマンドは、その抽出コマンドが出現した行からレポートの最後まで、レポートに適用されます。別の抽出コマンドがレポート内の後続の行で出現する場合、その抽出コマンドは前のコマンドを上書きします。

フォーマット・コマンドの理解

フォーマット・コマンドを使用して、レポートの外観を指定したり、データ値の表示を制御できます。フォーマットされたデータ値は、抽出コマンドとレポート・コマンドの組合せに基づいて、スクリプトの実行時にレポートに表示されます。

フォーマット・コマンドでは、レポートのフォーマットと表示形式をカスタマイズし、レポート時間の計算を作成できます。フォーマット・コマンドは、通常、中カッコ({ })で囲まれています。ただし、一部のフォーマット・コマンドは小なり記号(<)で始まります。

フォーマット・コマンドはレポート・スクリプト内にグローバルに適用されるか、メンバーに固有であるかのどちらかです。

レポート・スクリプトの構文の理解

レポートを作成するには、レイアウト、メンバー選択およびフォーマットを定義するコマンドをレポート・スクリプト・エディタで入力します。スクリプトのそれぞれの要素は、読みやすくするために色分けされます。入力時にオートコンプリートを使用可能にして、スクリプトを対話式に作成できます。Oracle Essbase Administration Services Online Helpの「レポート・スクリプト・エディタについて」を参照してください。

レポート・スクリプトを書く場合、次のガイドラインに従います:

  • 読みやすくするために、コマンドを1つ以上のスペース、タブまたは新しい行で区切ります。レポート処理は、余分な空白行、スペース、タブの影響を受けません。

  • コマンドは大文字または小文字で入力します。コマンドでは大文字と小文字が区別されません。データベース・アウトラインで大文字と小文字が区別される場合、レポート・スクリプトのメンバーはそのアウトラインに合わせる必要があります。

  • レポート処理を開始するには、感嘆符(!)レポート出力コマンドまたは1つ以上の連続する数値を入力します。同じレポート・ファイル内に、1つ以上のレポート・スクリプトを、それぞれの!コマンドで終了させて配置することができます。

  • 1組の中カッコ内で複数のフォーマット・コマンドをグループ化できます。たとえば、次のフォーマットは同じです:

                {UDATA SKIP}
     {UDATA} {SKIP}
             
  • 次のケースでは、メンバー名を引用符で囲みます:

    • アンパサンドで始まる名前(たとえば、"&Product")。

    • スペースを含む名前(たとえば、"Cost of Goods Sold")。

    • 単語Defaultを含む名前(たとえば、"Default Value")。

    • 重複するメンバー名。修飾メンバー名として入力する必要があります(たとえば、"[2006].[Qtr1]")。

    • 名前の先頭に1つ以上の数字を含む名前(たとえば、"100-Blue")。

    • 名前に、表90にリストされる文字が含まれる場合:

      表 90. メンバー名を囲む必要のある文字

      文字

      説明

      *

      アスタリスク

      @

      アット・マーク

      {}

      中カッコ

      [ ]

      大カッコ

      ,

      カンマ

      :

      コロン

      -

      ダッシュ、ハイフンまたはマイナス符号

      <

      小なり記号

      ()

      丸カッコ

      +

      プラス符号

      ;

      セミコロン

      /

      スラッシュ

  • フォーマット・コマンドの前にアンダースコア、等号またはハイフンが3つ以上あると、レポート・エクストラクタでは、これらの文字が無関係の下線付き文字であるとみなされ、無視されます。たとえば、==={SKIP 1}などです。

  • //(ダブル・スラッシュ)を使用してコメントを記述します。コメントに続く行の内容はすべて、レポート・ライターでは無視されます。コメントの各行はダブル・スラッシュで始める必要があります。これによって、複数の行で構成されるコメントを追加できます。

  • コマンド名を短縮するときは注意してください。コマンド名は同じ文字で始まることが多いので、確実に特定できる短縮形を使用しないと、予期しない結果が生じることがあります。

ページ・レイアウトの設計

レポートは、多次元データの2次元の表示です。ページ・レイアウト・コマンドを使用して、ネストした列または行のグループとして定義された追加の次元をページに取り込んだり、追加のページをレポートに取り込んだりできます。

ページ・レイアウトは、ページの列と行を構成する見出しで構成されます。ページ、行および列データの抽出コマンドを特定のメンバー選択と組み合せて、レポートの基本レイアウトを定義します。

ページ・レイアウトの各構成要素は、次の異なるフォーマット・コマンドを持ちます:

      <PAGE 
<COLUMN 
<ROW
   

さらに、<ASYMと<SYMコマンドでは、列次元メンバー・リストのデフォルトの解釈方法を上書きして、非対称か対称のレポート・フォーマットを生成します。

ページ、列および行の見出しのフォーマットを参照してください。

ページ、列および行の見出しの作成

  レポートの見出しを定義するには:

  1. <PAGE(dimensionName, dimensionName)を入力します

    dimensionNameには、現在のページに表示される次元をリストします。ページのすべてのデータ値には、ページ見出しの次元が共通のプロパティとして適用されています。例:

                <PAGE (Measures, Market)
             
  2. 「[Enter]」キーを押します。

  3. <COLUMN(dimensionName)を入力します

    dimensionNameには、ページにまたがって表示する各次元の名前を指定します。例:

                <COLUMN (Year)
             

    次元名を追加すると、ネスト列見出しが作成されます。

  4. 「[Enter]」キーを押します。

  5. <ROW(dimensionName)を入力します

    dimensionNameには、ページの縦方向に表示する各次元の名前を指定します。例:

                <ROW (Market)
             
  6. 「[Enter]」キーを押します。

    注:

    見出しコマンドに関連付ける追加のメンバーを選択できます。メンバー名をPAGE、COLUMNまたはROWコマンドのパラメータとして使用すると、レポート・エクストラクタによって、そのメンバーが該当する次元に関連付けられます。

レポート・スクリプトの例:

      <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. レポート・ライター・コマンド: 見出し

レポート・コマンド

説明

STARTHEADING

デフォルトの見出しのかわりに、レポートの各ページの先頭またはHEADINGコマンドの直後に表示されるカスタム・ページ見出しを作成します。ENDHEADINGコマンドを使用して、カスタム見出しの終わりを指定します。

HEADING

ページ見出し、すなわちデフォルトの見出しまたはSTARTHEADINGとENDHEADINGコマンドで定義された見出しのどちらかを表示します。

SUPHEADINGコマンドが使用されていた場合、このコマンドを使用してページ見出しの表示を再度使用可能にできます。

IMMHEADING

見出し非表示コマンドが使用されている場合、次の非表示でないデータ行を待機せずに見出しがただちに強制表示されます。

COLHEADING

列ヘッダーの表示を自動的にオンにします。

PAGEHEADING

次のデータ出力行の前にページ見出しを表示します。

ページ、列および行のフォーマットの抑制を参照してください。

対称型レポートと非対称型レポートの作成

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は、レポートでこのコマンドの後に続くメンバー選択コマンドに影響します。

  1. 列メンバーの選択が非対称のルールの要件を満たしているが、対称型レポートを生成する場合に、<SYMコマンドを使用します。<SYMコマンドを使用すると、必ず各列次元のすべての組合せが作成され、対称型レポートが生成されます。

  2. <ASYMコマンドを使用して、対称型フォーマットをオフにして、非対称型レポートのルールを復元します。

列見出しの変更

レポートの対称性ではなく、列見出しのみを変更する必要がある場合は、<PYRAMIDHEADERSと<BLOCKHEADERSフォーマット・コマンドが便利です。

  • <BLOCKHEADERSフォーマット・コマンドを使用して、対称型レポートで使用されているピラミッド形式のヘッダーを、非対称型レポートで使用されているようなブロック形式のヘッダーに変更します。対称型レポートでは、デフォルトで列のレイアウトに<PYRAMIDHEADERSモードが使用されます。

  • <PYRAMIDHEADERSフォーマット・コマンドを使用して、非対称型レポートで使用されているブロック形式のヘッダーを、対称型レポートで使用されているようなピラミッド形式のヘッダーに変更します。非対称型レポートでは、列のレイアウトに<BLOCKHEADERSモードが使用されます。

フォーマット

フォーマット・コマンドは、通常は、中カッコ({ })で囲まれ、最終レポートのデータとラベルのフォーマットを定義します。このコマンドは、グローバルメンバー専用のいずれかに設定できます。

  • グローバル・コマンドは、レポート・スクリプト・ファイル内で出現したときに実行されて、レポート・ファイルの終わりまで、または別のグローバル・コマンドに置き換わるまでその効果が持続します。

    たとえば、{SUPMISSINGROWS}コマンドでは、欠落した値のみを含むレポート・スクリプト・ファイル内のすべての行を抑制します。

  • メンバー専用コマンドは、レポート・スクリプトで出現したときに実行され(通常は、レポート・スクリプトの次のメンバー)、そのメンバーにのみ適用されます。メンバーに添付されているフォーマットは、そのメンバーが処理される前に実行されます。

    たとえば、{SKIP}コマンドを使用すると、レポート・スクリプトの行次元間で指定した行数がスキップされます。別の行で行をスキップする場合には、SKIPコマンドを再び使用する必要があります。

レポート・ページのフォーマット

複数のフォーマット・コマンドを使用して、最終レポートのページの外観を設計できます。参照:

例は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。

ページの長さ、幅および中央揃えの設定

表92にリストされているコマンドを使用して、レポート・スクリプトの次のページ仕様を設定できます:

表 92. レポート・ライター・コマンド: ページ長さ、幅および中央揃え

レポート・コマンド

説明

WIDTH

列の幅を指定します。

LMARGIN

左余白を設定します。

SETCENTER

ページの中央を設定します。

改ページの挿入

レポート・スクリプトには、表93にリストされているコマンドを使用して、次のタイプの改ページを設定できます:

表 93. レポート・ライター・コマンド: 改行

レポート・コマンド

説明

PAGELENGTH

各ページの行数を設定します。

NEWPAGE

現在のページに生成された行数とは無関係に改ページを強制します。

PAGEONDIMENSION

コマンド内のメンバーと同じ次元のメンバーが、レポートのある行から次の行に変更されるたびに改ページを挿入します。この機能をオフにするには、NOPAGEONDIMENSIONコマンドを使用します。

FEEDON

あるページの行数が現在のPAGELENGTH設定より大きくなるときに、レポートの改ページを使用可能にします。

ページ、列および行の見出しのフォーマット

列と行のフォーマット・コマンドにより、特殊タイプのフォーマット設定コマンドを構成します。

列フォーマットの設定

列フォーマット・コマンドの指定は、目的のフォーマットに従って、適用する列の前または後ろに置くことができます。

たとえば、Sample.Basicデータベースに基づいている次のスクリプトでは、最初の{DECIMAL}コマンドは2つの列(ActualとBudget)が設定された後に処理されます。ただし、この{DECIMAL}コマンドは、まだ存在しない列3を参照しています。Essbaseでは、レポートを3つの列に動的に拡大することでこのコマンドに対応します。レポートの指定が6つの列に拡大すると、{DECIMAL}のフォーマットは列36(および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)
   

注:

デフォルトでは、属性計算次元メンバー(たとえば、SUM、AVG)は、列として表示されます。これらを行の中に表示するには、それらをROWコマンドの中に含める必要があります。

長い列名と行名への対応

長すぎて列に収まらないメンバー名は、自動的に切り捨てられます。チルダ文字(~)は、名前の一部が欠けていることを示しています。長いメンバー名は、別名を使用するときによく見られます。

表94にリストされているコマンドを使用して列を変更し、メンバー名全体を表示できます:

表 94. レポート・ライター・コマンド: 長い列名と行名

レポート・コマンド

説明

NAMEWIDTH

列内のすべての行メンバーの列幅を定義します。

NAMESCOL

行メンバー列が表示される場所を変更し、残りの列を左または右に移動して長いメンバー名を表示できるようにします。

ページ、列および行のフォーマットの抑制

表95にリストされているコマンドを使用して、レポートのページ見出し、列および行の表示を抑制できます:

表 95. レポート・ライター・コマンド: ページ見出し、列および行の抑制

レポート・コマンド

説明

SUPCOLHEADING

レポートのデフォルトの列見出し。

SUPEMPTYROWS

ゼロまたは欠落した値のみを持つ行。

SUPMISSINGROWS

欠落した値が含まれるすべての行。INCMISSINGROWS、INCZEROROWSまたはINCEMPTYROWSを使用して、空の行、欠落データまたはゼロを持つ行を表示します。

SUPPAGEHEADING

見出しの生成時のページ・メンバー見出し。

SUPALL

最終レポートのページ見出しと列見出し、すべてのメンバー名、改ページ、カンマおよび大カッコ。行メンバー名の列を表示するには、NAMESONコマンドを使用します。カンマと大カッコの使用をオンにするには、COMMASとBRACKETSコマンドを使用します。

SUPHEADING

各ページの先頭のデフォルトの見出し(ページ・ヘッダーと列ヘッダー)または定義されていればカスタム・ヘッダー。

SUPNAMES

最終レポートの行メンバー名。NAMESONコマンドを使用して、行メンバー名をレポートに含めます。

SUPOUTPUT

計算、フォーマット設定などのすべての操作を処理し続けている間のすべての出力。

OUTPUTコマンドを使用して、SUPOUTPUTの動作を逆にします。

SUPCURHEADING

CURRENCYコマンドを使用して、レポートのデータ値を指定した通貨に換算するときの通貨情報。

行名の繰返し

レポートの各行で行メンバー名を繰り返すには、<ROWREPEATコマンドを使用します。行メンバー名が次の行で変更されない場合にレポートの各行で行メンバー名を繰り返さない場合は、<NOROWREPEATコマンドを使用します。NOROWREPEATはデフォルトで使用可能です。

タブ区切り記号の使用

たとえば、レポート出力を別のフォームにエクスポートする場合に、レポート・スクリプトで、列間にスペースではなくタブを使用できます。

スペースをタブ区切り記号で置換するには、レポート・スクリプトの任意の場所に{TABDELIMIT}を入力します。

合計と小計の追加

列と行の計算によって、データベース・アウトラインに定義されていない追加の計算を作成できます。たとえば、列と行の計算を使用すると、選択したデータ・メンバーに基づいてレポートに追加の列または行を作成したり、追加または既存の列と行に対して計算を実行したりできます。

列と行の計算を含むレポート・スクリプトの例は、『Oracle Essbaseテクニカル・リファレンス』の「レポート・スクリプトの例」ページの「サンプル14: 列の計算」を参照してください。

列の合計

CALCULATE COLUMNコマンドでは、レポート列の作成、即時計算の実行および新規作成列での計算結果の表示を行います。

表96は、列計算コマンドのリストです:

表 96. レポート・ライター・コマンド: 列計算

レポート・コマンド

説明

CALCULATE COLUMN

レポート列を作成し、動的計算を実行し、新規作成列に計算結果を表示します。レポートでの列計算を一時的に使用不可にするには、OFFCOLCALCSコマンドを使用し、計算を再び使用可能にするにはONCOLCALCSコマンドを使用します。

REMOVECOLCALCS

レポートからすべての列計算定義を削除します。

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などのフォーマット・コマンドを使用して、カスタム見出しを作成します。

列の番号付け

レポート内の複数のセクションが異なる数の列を持つため、通常(計算対象外)の列の数がレポート内で変わる場合は、次に示すように、計算済列を識別するために使用される列の番号が変わります:

  • レポートの最初のセクションに12個の列(行名の列を含む)があり、3つの計算済列が宣言されている場合は、列番号0-11は通常の列になり、列12-14は計算済列になります。

  • レポートの2番目のセクションで通常の列の数を6に減らすと、通常の列は列0-5になり、同じ計算済列は列6-8になります。

  • 同様に、通常の列の数が増えると、計算済列の番号付けはより大きい番号から始まります。

たとえば、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

行を作成して、その行を行の名前またはラベルに関連付けます。このプロセスは、変数の宣言と似ています。CALCULATE ROWを使用して簡単な計算を実行することもできます。複雑な計算にはSETROWOPを使用します。「OFFROWCALCS」と「ONROWCALCS」も参照してください。

OFFROWCALCS

レポートでの行計算を一時的に使用不可にします。「CALCULATE ROW」と「ONROWCALCS」も参照してください。

ONROWCALCS

OFFROWCALCSの使用後に、計算を再び使用可能にします。「CALCULATE ROW」と「OFFROWCALCS」も参照してください。

SETROWOP

CALCULATE ROWで指定された行の複雑な計算を定義します。SETROWOPでは、後続のすべての出力データ行に適用する計算演算子を定義します。PRINTROWコマンドを使用して、新規作成行に計算結果を表示できます。

PRINTROW

CALCULATE ROWで指定された行をレポートに即時表示します。

CLEARROWCALC

計算済行の値を#MISSINGにリセットします。「CLEARALLROWCALC」も参照してください。

CLEARALLROWCALC

CLEARROWCALCコマンドの使用後にすべての計算行の値をリセットします。

SAVEROW

取り込んだデータで計算済行を作成します。「SAVEANDOUTPUT」も参照してください。

SAVEANDOUTPUT

データを取り込んで、SAVEROWコマンドの使用後に結果を出力します。

列を指定するコマンドでは、列の元の順序で決定された有効なデータ列番号を使用する必要があります。

  • 式内のすべての演算子の前後にはスペースを1つ付けます。

  • Essbaseでは、ネストした(カッコ付きの)式をサポートしません。

  • Essbaseでは、式で整数と浮動小数点の定数を、単一のエントリまたは配列のメンバーとしてサポートします。

CALCULATE ROWコマンドでは、定数、その他の計算済行および演算子からなる等式として、演算(+、-、*、/またはOFF)を指定できます。等式は、宣言時に評価されます。メンバー名は、CALCULATE ROWコマンドの式ではサポートされません。

演算子を指定した場合、その演算子は後続の出力行に適用され、その結果は計算済行に保管されます。演算子の指定は、一連の行を集約して、小計または合計を得るときに便利です。演算子をリセットするには、SETROWOPを使用します。CALCULATE ROWコマンドで等式も演算子も指定しなかった場合、+演算子が指定されたとみなされます。

CALCULATE ROWコマンドは、標準的な算術演算をサポートします。

レポート・スクリプトの例:

      { CALC ROW "Total Sales" = "Sales..Group1"
     + "Sales..Group2" }
   

この例では、他の2つの計算行を基にして「Total Sales」を作成します。

データの表示方法の変更

フォーマット・コマンドを使用して、最終レポートでのデータの表示方法をカスタマイズできます:

下線付け

視覚的な手段として、表98にリストされているコマンドで、下線を使用してレポート内の情報のブロックを分割します:

表 98. レポート・ライター・コマンド: 下線

レポート・コマンド

説明

UNDERLINECHAR

レポート内で表示するデフォルトの下線文字を設定します。

UCHARACTERS

前の行にある空白以外のすべての文字に下線を付けます。

UCOLUMNS

前の行にあるすべての列に下線を付けます。

UDATA

行のすべてのデータ列に下線を付け、行名列には下線を付けません。

UNAME

前の行にあるすべての行名列に下線を付け、データ列には下線は付けません。

UNAMEONDIMENSION

コマンドで指定したメンバーと同じ次元のメンバーが変更されるたびに、行の行メンバー名に下線を付けます。新しい行に下線を付けないようにするには、NOUNAMEONDIMコマンドを使用します。

データのフォーマットの抑制

表99にリストされているSUPPRESSコマンドを使用して、最終レポートに表示する必要がないデータを抑制できます:

表 99. レポート・ライター・コマンド: データのフォーマットの抑制

レポート・コマンド

説明

SUPBRACKETS

負数を囲むカッコ。BRACKETSコマンドを使用すれば、カッコが再び使用可能になります。

SUPCOMMAS

999より大きな数のカンマ。COMMASコマンドを使用すれば、カンマが再び使用可能になります。

SUPZEROROWS

ゼロのデータ値のみを持つ行。INCZEROROWSまたはINCEMPTYROWSを使用すれば、再び表示できます。

SUPEUROPEAN

ヨーロッパ式の数値の表示(2.000,01は、ヨーロッパ以外の表示では2,000.01)。EUROPEANコマンドを使用すれば、ヨーロッパ式の表示が再び使用可能になります。

SUPFEED

あるページの行数が現在のPAGELENGTH設定より大きくなるときの、改ページの自動挿入。

SUPFORMATS

下線やスキップなどの出力を生成するフォーマット。INCFORMATSを使用すれば、再び表示できます。

SUPMASK

MASKコマンドを使用してレポートに定義されたテキスト・マスク。INCMASKを使用すれば、再び表示できます。

SUPPRESSコマンドを使用したフォーマットの抑制の詳細は、ページ、列および行のフォーマットの抑制を参照してください。

インデント

インデントを使用して、スクリプトの行レベルに視覚的な目印を設定します。表100は、インデント・コマンドのリストです:

表 100. レポート・ライター・コマンド: インデント

レポート・コマンド

説明

INDENT

指定された文字数のみ、列出力順で最初の行名列を移動します。

INDENTGEN

データベース・アウトライン内の世代に基づいて、行名列の後続の行メンバーをインデントします。世代名に基づいて行メンバー名を左に揃えるには、NOINDENTGENコマンドを使用します。

カスタム・タイトルの挿入

タイトルはユーザー生成のオプションであり、自動的に生成されるページや列見出しおよび行名とは異なり、レポート・ページ上のデータを説明します。

タイトルは各レポート・ページの先頭で繰り返され、次のようなレポートの情報を提供します:

  • 日付とタイム・スタンプ

  • レポートを実行しているユーザーの名前

  • ページ番号

  • ソース・データベースの名前

  • 他の説明的な情報

タイトルをレポートに追加するには、TEXTコマンドを次のように組み合せて使用します:

  • レポート内の情報を自動的に表示する、事前定義の任意のキーワード

  • 定義するテキスト文字列

    注:

    レポートの終わりでTEXTコマンドを使用して、要約情報を提供することもできます。

欠落テキストまたはゼロのラベルによる置き換え

レポートを実行する場合、データを取得できなかった空のデータ・セルや、値がゼロであるセルが、多く存在することがあります。

データ値が見つからない場合、レポートではデータ・セルにデフォルトの#MISSINGラベルを表示します。

  #MISSINGラベルをテキスト・ラベルに置き換えるには、スクリプト内の、#MISSINGラベルをテキスト・ファイルに置き換える箇所に、次のコマンドを入力します:

         {MISSINGTEXT ["
         text
         "]}
      

textは、データ・セルに表示されるテキスト文字列です。

MISSINGTEXTコマンドをレポート・スクリプトの任意の箇所に置くと、そのコマンドはスクリプト全体に適用されます。

注:

レポートに#MISSINGラベルが表示されないような設定もできます。SUPPRESSコマンドを使用したラベルの抑制方法は、データのフォーマットの抑制を参照してください。

  ゼロをテキスト・ラベルに置き換えるには、スクリプト内の、ゼロをテキスト・ラベルに置き換える箇所に、次のコマンドを入力します:

         {ZEROTEXT ["
         text
         "]}
      

textは、データ・セルに表示されるテキスト文字列です。

注:

値が#MISSINGと等しい場合、AFTERコマンドを使用してその値の後に挿入したすべての文字列は、印刷されません。#MISSINGを他の値(0など)に置き換えた場合でも、AFTER文字列は印刷されません。

空白の追加

レポート内に空白を追加すると、合計などの重要な情報が読者の目を引きます。表101は、空白の追加に使用するコマンドのリストです:

表 101. レポート・ライター・コマンド: 空白

レポート・コマンド

説明

SKIP

最終レポート内に1つ以上の空白行を追加します。

SKIPONDIMENSION

コマンド内に指定されたメンバーと同じ次元のメンバーがレポートの次の行で変更されるとき、1つの空白行を追加します。

NOSKIPONDIMENSIONコマンドを使用して、新しい行の挿入をオフにします。

データ値の表示方法の変更

表102にリストされているコマンドを使用して、最終レポートのデータ表示方法を変更できます:

表 102. レポート・ライター・コマンド: データ値の表示

レポート・コマンド

説明

COMMAS

SUPCOMMASまたはSUPALLコマンドでカンマが抑制された後で、999よりも大きい数字に対するカンマの表示をオンにします。

BRACKETS

スクリプトで先にSUPBRACKETSコマンドを使用した場合に、負の記号のかわりに、負数を囲むカッコの表示をオンにします。

AFTER

データ値の後に、パーセンテージ記号または他の文字を組み込みます。

BEFORE

データ値の前に、ドル記号または他の文字を組み込みます。

EUROPEAN

小数点を3桁区切り文字として使用し、カンマを数の小数部と整数部の分離に使用して数を表示するヨーロッパ方式(非ヨーロッパ方式の2,000.01は2.000,01となる)を使用します。

MASK

各出力行のテキストを指定された文字と位置で上書きします。

メンバーの選択とソート

最終レポートのデータは、選択したメンバーとその表示順序に基づいて表示されます。また、条件付き取得を使用して、メンバーの選択とソートをさらに細かく指定できます。

メンバーの選択

メンバー選択コマンドは、兄弟、世代、レベルなどのデータベース・アウトラインの関係に基づいてメンバーの範囲を選択する抽出コマンドです。メンバー選択コマンドを使用すれば、メンバー選択コマンドが基準とするメンバー名を変更しないかぎり、アウトラインへの変更を自動的にレポートに反映できます。属性次元をメンバー選択コマンドに入れることができます。

表103は、メンバー選択コマンドのリストです:

表 103. レポート・ライター・コマンド: メンバーの選択

レポート・コマンド

説明

ALLINSAMEDIM

次元メンバーと同じ次元のメンバーを選択します。

ALLSIBLINGS

指定されたメンバーの兄弟を組み込みます。

ANCESTORS

指定されたメンバーの祖先を組み込みます。

ATTRIBUTE

その属性に基づく基本次元メンバーを選択します。

CHILDREN

指定されたメンバーの直下にあるレベルのメンバーを選択します。

DESCENDANTS

次元の最上位を除き、指定されたメンバーの子孫をレポートに組み込みます。

DIMBOTTOM

特定のメンバーが属する次元のすべてのレベル0のメンバーを選択します。

DIMTOP

次元の最上位のメンバーを組み込みます。

IANCESTORS

メンバーとその祖先を組み込みます。

ICHILDREN

指定されたメンバーとその直下にあるレベルのメンバーを選択します。

IDESCENDANTS

指定されたメンバーとその子孫を組み込みます。

IPARENT

指定されたメンバーとその親を組み込みます。

OFSAMEGEN

指定されたメンバーと同じ次元と世代のメンバーを組み込みます。

ONSAMELEVELAS

指定されたメンバーと同じ次元と同じレベルにあるメンバーを組み込みます。

PARENT

指定されたメンバーの親をレポートに組み込みます。

TODATE

特定の日付のデータまたは特定の日付の前後の期間のデータを抽出します。

WITHATTR

指定された属性次元に関連付けられた基本次元メンバーを組み込みます。

世代名とレベル名によるメンバーの選択

世代名レベル名の選択コマンドでは、次のいずれかのアイテムに基づいて、特定のレベルまたは世代のメンバーを識別します:

  • アウトラインのデフォルトの世代名またはレベル名

  • アウトラインのユーザー定義の世代名またはレベル名

世代名とレベル名を使用すると、アウトラインへの変更が自動的にレポートに反映されます。独自の世代名とレベル名を定義するか、Essbaseに用意されているデフォルト名を使用できます。世代とレベルを参照してください。

可能な場合は世代名またはレベル名を使用すると、レポートの管理が簡単になります。レポートでメンバー名を指定する必要がないので、メンバー名が変更またはデータベース・アウトラインから削除された場合にレポートを変更する必要がありません。

注:

世代名とレベル名は独立したコマンドです。<DESCENDANTSや<CHILDRENなどのレポート抽出コマンドまたはフォーマット・コマンドでメンバー名のかわりに世代名またはレベル名を使用することはできません。

  デフォルトのレベル名を使用するには、スクリプト内の、デフォルトのレベル名でメンバーを選択する箇所で、次のフォーマットを使用します:

         Lev
         n
         ,
         dimensionName
          
      

nは、レベル番号です。

dimensionNameは、メンバーを選択する次元の名前です。

注:

カンマの後にスペースを置かないでください。

たとえば、Lev1,Yearでは、年次元のすべてのレベル1のメンバーを選択します。

  デフォルトの世代名を使用するには、スクリプト内の、デフォルトの世代名でメンバーを選択する箇所で、次のフォーマットを使用します:

         Gen
         n
         ,
         dimensionName
          
      

nは、世代番号です。

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にリストされているコマンドを使用できます:

表 104. レポート・ライター・コマンド: 重複メンバーの選択

レポート・コマンド

説明

REPQUALMBR

一意のメンバー名についてはメンバー名を、重複するメンバー名については修飾名を表示します。

REPMBR

指定した次元のメンバーのメンバー名のみを表示します。

REPMBRALIAS

メンバー名の後に別名を表示します。

REPALIAS

レポート出力に含まれるメンバーに対し、別名の後にメンバー名を表示します。

REPALIASMBR

指定した次元のメンバーに対し、別名の後にメンバー名を表示します。

OUTPUTMEMBERKEY

重複するメンバー名のメンバー識別子を表示します。

動的時系列メンバーの選択

データベース・アウトラインで動的メンバーを作成し、識別します。動的メンバーは、レポート・スクリプトの生成など、ユーザーの取得要求時にのみ計算されるメンバーです。時間次元には、特別な動的時系列オプションがあります。動的時系列オプションには、次の予約世代名があります。この世代名は、表105にリストされている、アウトラインの別名テーブルで定義できます:

表 105. 動的時系列: 予約世代名

世代名

予約名

説明

履歴

H-T-D

履歴の初めからの累計

Y-T-D

年次累計

季節

S-T-D

当季初めからの累計

期間

P-T-D

当期間初めからの累計

四半期

Q-T-D

四半期間累計

M-T-D

月次累計

W-T-D

当週初めからの累計

D-T-D

当日初めからの累計

動的時系列メンバーに対する事前定義の世代名の適用を参照してください。

注:

アウトラインのデータベース・ヘッダー・メッセージでは、現在のアウトラインで使用可能な動的メンバーの番号を識別します。

  動的時系列メンバーを選択するには、スクリプト内の、動的時系列メンバーを選択する箇所で、次のいずれかを使用します:

  • <LATEST memberName

    memberNameは時間次元のメンバーの名前です。

    <LATESTコマンドはレポート・スクリプト全体に適用されるグローバル・コマンドであり、次元内の最下位レベルのメンバーに基づく集約です。

  • reservedName(memberName)

    reservedNameは予約された動的時系列世代名であり、memberNameは時間次元のメンバーの名前です。

    この構文を使用して動的時系列を指定する場合、時系列名は引数内にリストされたメンバーにのみ関連付けられます。

レポート・スクリプトを実行すると、メンバーは動的に更新され、情報は最終レポートに組み込まれます。

注:

動的時系列の文字列は、データベース・アウトラインに表示されているとおりに入力する必要があります。文字列を作成して最終レポートに組み込むことはできません。データベース・アウトラインで動的時系列メンバーの別名テーブルを作成し、事前定義の世代名のかわりに別名を使用することはできます。

ブール演算子によるメンバーの選択

ブール演算子を使用すれば、レポートで厳密なメンバーの組合せを指定できます。これは、大規模なアウトラインを操作するときに役に立ちます。AND、ORおよびNOTブール演算子を抽出コマンドと組み合せて使用し、レポート・スクリプトでメンバー選択を詳しく指定します。

  • AND。すべての条件が満たされる必要がある場合。

  • OR。複数の条件のうち1つが満たされる必要がある場合。

  • NOT。選択した条件の逆を選択する場合。

  演算子を使用してブール式を作成するには、スクリプト内の、リンクを使用する箇所に、次のフォーマットを入力します:

         <LINK (
         extractionCommand
          [
         operator extractionCommand
         ])
      

extractionCommandはデータを取得するメンバー選択コマンドであり、operatorはAND演算子またはOR演算子です。

注:

同じ次元のメンバーを選択します。すべての抽出コマンドの引数は、前の例のように丸カッコで囲む必要があります。NOTは抽出コマンドにのみ関連付けることができ、式全体には適用されません。

ブール演算子は、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")
   

メンバー選択条件の絞り込みの他の例は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。

代替変数によるメンバーの選択

代替変数は、定期的に変化する情報のグローバル・プレースホルダとして機能します。Administration Services、MaxLまたはESSCMDを使用して、代替変数をサーバーに設定し、各変数に値を割り当てます。その値はいつでも変更でき、レポート・スクリプトへの手動変更を減らすことができます。代替変数を設定するにはデータベース・マネージャ以上の役割が必要です。

たとえば、多くのレポートはレポート期間に依存します。当月に基づいてレポートを生成する場合、毎月レポート・スクリプトを手動で更新する必要があります。サーバーに設定したCurMnthなどの代替変数を使用すれば、各月の割当て値を該当する期間に変更できます。最終レポートを実行すると、Essbaseによって動的に情報が更新されます。

データベース・アウトラインで代替変数を作成および変更する方法は、代替変数の使用を参照してください。先頭の&文字の詳細は、『Oracle Essbaseテクニカル・リファレンス』を参照してください。

代替変数は次のレベルで設定できます:

  • サーバー。サーバー上のすべてのアプリケーションとデータベースから変数にアクセスできます。

  • アプリケーション。アプリケーション内のすべてのデータベースから変数にアクセスできます。

  • データベース。指定されたデータベースにアクセスできます。

  代替変数を使用するには、スクリプト内の、変数を使用する箇所で、次のフォーマットを使用します:

         &
         variableName
      

variableNameは、サーバー上に設定された代替変数と同じです。

たとえば、

      <ICHILDREN &CurQtr
   

これは次のようになります

      <ICHILDREN Qtr1
   

注:

代替変数では、レポートを実行するアプリケーションやデータベースからアクセス可能であることが必要です。また、変数名は英数字の組合せであり、最大サイズは制限で指定されています。変数名にスペースと句読点を使用することはできません。

レポート・スクリプトを実行すると、Essbaseによって変数名が代替値に置換され、その情報が最終レポートに組み込まれます。

属性によるメンバーの選択

属性を使用して、基本メンバーの1つ以上の特性に基づいて、データを選択し、レポートできます。属性に従って基本次元のメンバーをグループ化および分析できます。また、複数の属性に基づいてクロス集計レポートを実行できます。<ATTRIBUTEコマンドを使用して、属性に関連付けられているすべての基本次元メンバーを選択できます。たとえば、ニューヨークでの12オンス単位のグレープ・ジュースとオレンジ・ジュースの第1四半期の販売量について、Sample.Basicデータベースをクエリーできます。

  特定の属性に基づいてメンバーを選択するには、スクリプト内の、特定の属性に基づいてメンバーを選択する箇所で、次のフォーマットを使用します:

         <ATTRIBUTE 
         memberName
      

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")
   

注:

サポートされている日付フォーマットのタイプは、mm-dd-yyyyまたはdd-mm-yyyyです。日付は、1970年1月1日から2038年1月1日までの範囲(両端の日付を含む)で指定する必要があります。

UDAによるメンバーの選択

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によってUDAのメンバーが最終レポートに組み込まれます。

注:

UDA文字列は、データベース・アウトラインに表示されているとおりに入力する必要があります。UDA文字列を作成してレポート・スクリプトに組み込むことはできません。

ワイルドカードによるメンバーの選択

ワイルドカードを使用して、レポート・スクリプトでメンバー、世代またはレベルの名前を選択できます。メンバー名を使用すると、Essbaseによってメンバーとそのメンバーのすべての子孫が検索されます。世代名またはレベル名を指定すると、Essbaseによってその世代またはレベルのメンバーのみが検索されます。

ワイルドカードを使用すると、スクリプトに必要なメンバー情報の量が減るので、スクリプトのメンテナンスが簡単になります。

次の2つのタイプのワイルドカードがレポート・ライターでサポートされています:

  • 共通のメンバー・プロパティを検索するための文字列の末尾のアスタリスク(*)

  • 任意の単一文字のメンバー・プロパティを表現するための文字列中の、パターン照合疑問符(?)

  末尾ワイルドカードを使用してメンバーを選択するには、スクリプト内の、末尾ワイルドカードを使用してメンバーを選択する箇所で、次のフォーマットを使用します:

         <MATCH (
         memberName
         ,"
         character
         *")
      

memberNameは選択するメンバーの名前であり、characterは次のメンバーの開始文字です。次のレポート・スクリプトを使用します:

      <MATCH (Year,"J*")
   

Jan、JunおよびJulが戻されます。

  パターン照合ワイルドカードを使用してメンバーを選択するには、スクリプト内の、パターン照合ワイルドカードを使用してメンバーを選択する箇所で、次のフォーマットを使用します:

         <MATCH (
         memberName
         ,"???
         characters
         ")
      

memberNameは選択するメンバーの名前であり、charactersは次のメンバーの文字です。次のレポート・スクリプトを使用します:

      <MATCH (Product,"???-10")
   

100-10、200-10、300-10および400-10が戻されます。

注:

Sample.Basicデータベースの例では、3つの疑問符によって、文字列の3つの可変文字を表しています。この例で2つの疑問符を使用した場合、一致は見つかりません。疑問符のワイルドカードは一致文字列の任意の場所に置くことができます。

共有メンバーの抑制

次のアイテムとともに使用して、レポート用にデータを抽出するときに以降の共有メンバーのインスタンスを非表示にできます:

  • 世代名

  • レベル名

  • DIMBOTTOMコマンド

  • OFSAMEGENコマンド

  • ONSAMELEVELASコマンド

共有メンバーを抑制して、レポート内の不要なデータ重複を取り除きます。

  共有メンバーを抑制するには、スクリプト内の、共有メンバーを抑制する箇所で、次のように入力します:

         <SUPSHARE 
      

<SUPSHAREを使用すると、レポート・スクリプトの実行期間中に共有メンバーが非表示になります。共有メンバーを再び表示するには、<SUPSHAREOFFを使用します。

メンバーの表示方法の選択

別名を使用すると、レポートが読みやすくなり、読者はメンバー名の意味ではなく、データ値に集中できます。メンバーは、レポートで別名を使用して表示できます。たとえば、メンバー名100-20、100-30ではなく、Diet Cola、Caffeine Free Colaなどのページ名、列名、行名を表示できます。

修飾メンバー名は、重複メンバー・データベースで特定のメンバーを識別するのに役立ちます。重複メンバー名が見つかった場合には、修飾メンバー名を表示できます。たとえば、[State].[New York]と[City].[New York]は、メンバー名New Yorkを一意に識別します。重複メンバー名の詳細は、重複メンバーのアウトラインの作成および使用を参照してください。

表106は、メンバー名表示に使用するコマンドのリストです:

表 106. レポート・ライター・コマンド: メンバー名表示

レポート・コマンド

説明

<REPALIAS

指定した次元にあるメンバーの別名を表示します

<REPALIASMBR

別名にメンバー名を付けて表示します

<REPMBRALIAS

メンバー名に別名を付けて表示します

<REPMBR

指定した次元のメンバーのメンバー名のみを表示します

<REPQUALMBR

固有のメンバー名についてはメンバー名を表示し、重複するメンバー名については修飾名を表示します

<OUTPUTMEMBERKEY

重複するメンバーのメンバー識別子、メンバー名および別名を表示します。

<REPALIAS、<REPALIASMBR、<REPMBRALIAS、<REPMBRおよび<REPQUALMBRは、特定の次元に適用できるフォーマット・コマンドです。これらのコマンドは、お互いを上書きします。たとえば、<REPALIASMBR Productが出現した場合、レポート・ライターではメンバー名の前に別名が表示されます。これ以降のスクリプトで<REPMBRALIAS Productが出現した場合、レポート・ライターでは別名の前にメンバー名が表示されます。重複メンバーのアウトラインの場合、<OUTPUTMEMBERKEYコマンドと表内の他のコマンドの組合せが可能です。メンバー識別子と、メンバー名または別名、あるいはその両方をレポート出力に組み込むことができます。

メンバー名と別名を表示する例

メンバー名とその別名を組み合せて、レポートにメンバーを表示できます。メンバー名と別名を組み合せることによって、Diet Cola 100-20や100-30 Caffeine Free Colaなどのように、よりわかりやすいページ名、列名および行名を表示できます。

  メンバー名と別名を表示するには、レポート・スクリプトで、<REPALIASMBRコマンドまたは<REPMBRALIASコマンドを使用します。

次の例では<REPALIASMBRコマンドを使用して、メンバー名の前に別名を表示します:

            <PAGE (Product, Measures)
         

            <COLUMN (Scenario, Year)
         

            Actual
         

            <ICHILDREN Qtr1
         

            <ROW (Market)
         

            <IDESCENDANTS "300"
         

            <REPALIASMBR Product
         

                !
         

次のレポートが生成されます:

                       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は、メンバーのソートに使用するコマンドのリストです:

表 107. レポート・ライター・コマンド: メンバーのソート

レポート・コマンド

説明

SORTALTNAMES

別名がレポート・スクリプトで使用される場合、メンバーの別名によってメンバーをアルファベット順にソートします。

SORTASC

以降のメンバーを、最下位の世代から最上位の世代まで昇順にソートします。

SORTDESC

以降のメンバーを、最上位の世代から最下位の世代まで降順にソートします。

SORTGEN

データベース・アウトラインのメンバーの世代に従って、以降のメンバーをソートします。

SORTLEVEL

データベース・アウトラインのメンバーのレベルに従って、以降のメンバーをソートします。

SORTMBRNAMES

メンバーをメンバー名によってアルファベット順にソートします。

SORTNONE

レポートに追加されたメンバーが、データベース・アウトラインに基づく通常の階層順序に従うように、前のすべてのソート・コマンドを使用不可にします。

データ値の制限と順序付け

表108にリストされたコマンドを使用して、レポートで条件付き取得とデータのソートを実行できます:

表 108. レポート・ライター・コマンド: データ値の制限と順序付け

レポート・コマンド

説明

TOP

戻す行の数を指定します。この行には、特定のデータ列の一番上の値が含まれている必要があります。

BOTTOM

戻す行の数を指定します。この行には、特定のデータ列の一番下の値が含まれている必要があります。

RESTRICT

行が戻される前に、データ行の列が満たす必要がある条件を指定します。

ORDERBY

データ列のデータ値に基づいて、レポートの行の順序付けを指定します。

条件付き取得では構成可能な変数が使用されます。バッファのサイズの変更を参照してください。

操作の順序の理解

<RESTRICT、<ORDERBY、<TOPおよび<BOTTOMは、レポート・スクリプトの任意の場所で、任意の順序で使用できます。これらのコマンドを使用するときには、ページ・メンバーまたは列メンバーの前、あるいはページ・メンバーまたは列メンバーに広がる<PAGEコマンドまたは<COLUMNコマンド(たとえば、IDESCENDANTS、ICHILDREN)の前に、すべてのグローバル・スクリプト・フォーマット・コマンドを置きます。

Essbaseでは、次の順にデータを抽出し、制限と配列を適用します:

  1. RESTRICTと、SUPPMISSING、SUPZEROS、SUPEMPTYROWSなどの既存の制限オプションを適用します。

  2. TOPまたはBOTTOM、あるいは両方を適用します。

  3. ORDERBYを適用します。

Essbaseによって、行が戻され、出力が表示されます。

ソート・コマンドでのTOP、BOTTOMおよびORDERBYの使用

<TOP、<BOTTOMおよび<ORDERBYコマンドは、そのデータ値によってレポートの出力をソートします。Essbaseでは、最初に<TOPと<BOTTOMを適用し、次に<ORDERBYを適用します。レポートに、(データではなく、メンバーをソートする)<SORTMBRNAMESなどのソート・コマンドがある場合、Essbaseでは、最初にソート・コマンドを適用し、次に<TOPと<BOTTOM、その次に<ORDERBYを適用します。<ORDERBYが最終のソートです。

RESTRICTの使用

<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コマンドは、指定された列のデータ値に従って出力行を配列します。ORDERBYコマンドでオプションの方向引数を使用すると、ASCフラグで昇順を指定し、DESCフラグで降順を指定できます。同じレポートの列ごとに異なるソート方向を指定できます。方向引数を使用しなかった場合、昇順(ASC)がデフォルトで使用されます。

配列する行のセットを特定するには、コマンドで行グループ次元を指定します。デフォルトの行グループは、最も内側の行次元です。

!コマンドで終了するレポートごとに、<ORDERBYを1つのみ使用できます。レポート・スクリプトに複数のレポートが含まれている場合、各<ORDERBYは前のレポートの<ORDERBYを上書きします。

フォーマット・コマンドでのORDERBYの使用

<ORDERBYコマンドのガイドラインは次のとおりです:

  • レポートで<ORDERBYを使用するときには、行フォーマット・コマンドを使用しないでください。<ORDERBYによって、フォーマットするメンバーを含んでいる行が移動するので、レポートの指定の箇所で予定されているフォーマット・コマンドが予期せず出現することがあります。

  • 通常、行フォーマット・コマンドは使用しないで、列メンバーまたは列メンバーを展開する列コマンド(たとえば、「ICHILDREN column dimension, <column ..., column member」)の前に全体的なスクリプトのフォーマットを置きます。

TOPおよびBOTTOMの使用

<TOPコマンドと<BOTTOMコマンドでは、レポートで戻される行グループ内で、それぞれ最上位の行値または最下位の列値を持つ修飾行の数を指定します。行グループ・メンバーを指定しなかった場合、最も内側の行グループ次元がデフォルトの行グループになります。

同じレポートで<TOPと<BOTTOMを一緒に使用できますが、レポートごとに使用できる<TOPと<BOTTOMはそれぞれ1つのみです。同時に使用する場合、混乱を防ぐため、2つのコマンドにはその引数と同じデータ列が必要です。<TOPコマンドと<BOTTOMコマンドの結果は、コマンドで指定したデータ列の値に基づいて降順でソートされます。

<TOPと<BOTTOMは、行メンバー選択で指定する行の範囲にのみ作用します。

注:

<TOPまたは<BOTTOMが<ORDERBYと一緒に出される場合、<ORDERBYの順序付け列は、<TOPまたは<BOTTOMのデータ列と同じになる必要はありません。

<ORDERBY、<TOP、<BOTTOMコマンドの任意の組合せがレポート・スクリプトに一緒に存在する場合、行グループ・メンバー(<rowGroupMember>)は同じである必要があります。この制限によって、行グループ内での行のソートと配列に関する混乱を防ぐことができます。

注意

Essbaseでは、TOPまたはBOTTOMのソートを適用する前に、抽出された1セットのデータ行から、ソート対象列の#MISSING値を含む行を破棄します。

たとえば、このコマンドでは、行グループごとに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は、すべての制限が適用された後に、戻される(修飾)行の数に上限を適用します。この上限は、<TOPコマンドの行数と<BOTTOMコマンドの行数を足した値に等しいです。

他のレポート構成によるTOPおよびBOTTOMへの影響についての理解

<TOPコマンドと<BOTTOMコマンドを使用するときには、その操作が他のコマンドの影響を受けることに注意してください。特に、Essbaseでは、<SUPPMISSING、<SUPZEROSおよび<SUPEMPTYROWSオプションを制限として扱い、これらのオプションを<RESTRICTコマンドの制限とともに抽出された行に適用します。Essbaseでは、<TOPコマンドまたは<BOTTOMコマンドを処理する前、および<ORDERBYコマンドを適用する前に、この制限をデータ行に適用します。

フォーマット・コマンドでのTOPとBOTTOMの使用

レポートにフォーマット・コマンドが出現すると、そのコマンドに続くメンバーにそのコマンドが付加されます。たとえば、このシーケンスでは、列に下線を引くコマンド{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コマンドを使用して、通貨換算の見出しを表示します。

注:

通貨換算は透過パーティションではサポートされません。

通貨換算アプリケーションの詳細は、通貨換算アプリケーションの構築および換算の実行を参照してください。

C、Visual BasicおよびグリッドAPIを使用したレポートの生成

表108にリストされているように、C、Visual BasicおよびCグリッドAPIを使用してレポートを生成できます:

表 109. レポートAPI

タスク

CのAPI関数

Visual BasicのAPI関数

C GridのAPI関数

レポート仕様をアクティブ・データベースに送信開始する。

ESSBEGINREPORT

ESBBEGINREPORT

ESSGBEGINREPORT

アクティブ・データベースに送信中のレポート仕様の終わりにマークを付ける。

ESSENDREPORT

ESBENDREPORT

該当なし

アクティブ・データベースに単一文字列としてレポート仕様を送信する。

ESSREPORT

ESBREPORT

該当なし

アクティブ・データベースにレポート仕様をファイルから送信する。

ESSREPORTFILE

ESBREPORTFILE

ESSGREPORTFILE

説明と構文は、『Oracle Essbase APIリファレンス』を参照してください。