プライマリ・コンテンツに移動
Oracle® Fusion Middleware Oracle Business Intelligence Publisherデータ・モデリング・ガイド
12c (12.2.1.3.0)
E90113-02
目次へ移動
目次

前
前へ
次
次へ

3 データの構造化

ここでは、グループ、リンク、グループ・フィルタ、およびグループレベルやグローバルレベルの関数など、BI Publisherのデータ・エンジンによって返されるデータを構造化するための手法について説明します。

データ・モデルの操作

データ・モデルのダイアグラムは、複数のデータ・セットに基づいたレポート用のデータ・セット、ブレーク・グループおよび合計の定義を短時間で簡単に実行するために役立ちます。

マルチパートの関連付けられていないデータ・セットについて

データ・セット(または、問合せ),をリンクしていない場合、データ・エンジンはマルチパートの関連付けられていない問合せデータ・セットを生成します。

たとえば、次のイメージに示すデータ・モデルでは、一方の問合せで製品を選択して、もう一方の問合せで顧客を選択しています。製品と顧客の間には、リレーションシップはありません。

結果は、次のイメージに示すようなデータ構造で表示されます。

マルチパートの関連付けられたデータ・セットについて

場合によっては、データ・セットまたは問合せの一部からフェッチされるデータは、別の部分からフェッチされるデータによって判断されます。この結果は通常、マスター/ディテール関係または親子関係と呼ばれ、2つのデータ・セット(または問合せ)間のデータ・リンクで定義されます。

マスター/ディテールのデータ・モデルを実行すると、マスター(または親)問合せの行ごとに、ディテール(または子)に対する問合せが実行され、一致する行のみが取り出されます。

次のイメージに示す例では、2つのデータ・セットが要素Customer IDでリンクされています。Ordersデータは、Customersデータ・セットの子を設定します。

この例では、次のイメージに示すデータ構造が生成されます。

データ・セットの使用についてのガイドライン

データ・モデルの構築には、特定のガイドラインをお薦めします。

  • データ・モデル内のデータ・セットまたは問合せの数は、できるかぎり少なくしてください。一般的に、データ・セットおよび問合せの数を少なくするほど、データ・モデルの実行が高速になります。傾向としては、複数問合せデータ・モデルのほうがわかりやすく、単一問合せデータ・モデルのほうが速く実行できます。親子関係のある問合せでは、親ごとに子問合せが実行されることを理解しておく必要があります。

  • 複数問合せデータ・モデルは、次の場合にのみ使用してください。

    • 直接サポートされていないタイプの問合せ(SQL問合せなど)の関数を実行する場合。

    • 複合ビュー(分散問合せ、GROUP BY問合せなど)をサポートする場合。

    • ビューがないときやビューが必要なときにビューをシミュレートする場合。

データ・モデル・エディタの機能

データ・モデル・エディタを使用すると、複数のデータ・セットからのデータを単一のXMLデータ構造に結合できます。

複数のデータソースからのデータ・セットは、シーケンシャルXMLとしてマージするか、行レベルでマージすることで、単一の結合された階層XMLを作成できます。データ・モデル・エディタを使用すると、各タイプ(SQL問合せ、OLAP (MDX問合せ)、LDAPおよびMicrosoft Excel)のデータ・セットからのデータを簡単に結合できます。

データ・モデル・エディタがサポートする機能は、次のとおりです。

  • データのグループ化 - レポートの列を編成するためにグループを作成します。グループを使用すると、1つの問合せのデータをいくつかのセットに分けることと、問合せのデータをフィルタすることの2つが可能となります。

    問合せを作成すると、データ・エンジンはその問合せで選択される列を含むグループを作成します。ユーザーは、グループを作成して、データ・モデル内に現れるデータの階層を変更できます。グループは、主に、一部の列をそれ以外の列とは別に扱う必要があるときに使用します。たとえば、小計を生成する場合やブレークを作成する場合に、グループを作成します。

  • データのリンク - 複数のレベルでデータをグループ化するために、データ・セット間のマスター/ディテール・リンクを定義します。

  • データの集約 - グループ・レベルの合計と小計を生成します。

  • データの変換 - ビジネス用語やレポート要件に適合するように、ソース・データを変換します。

  • 計算の作成 - 基のデータソースではレポートに必要なデータ値が得られない場合に、そのデータ値を計算します。

データ・モデル・エディタには、要素レベル、グループ・レベルおよびグローバル・レベルの関数が用意されています。すべてのデータ・セットのタイプですべての関数をサポートするわけではないことに注意してください。制限事項については、使用するデータ・セットのタイプに付記されている「重要なメモ」の項を参照してください。次の図に、データ・モデル・エディタで使用できる機能とアクションの一部を示します。

インタフェースについて

デフォルトでは、ユーザーが作成したデータ・セットは個別のオブジェクトとして「ダイアグラム」ビューに示されます。

データ・セットの構造ビルダーには、次の3つのビューがあります。

  • 「ダイアグラム」ビュー - 「ダイアグラム」ビューにはデータ・セットが表示され、リンクやフィルタの作成、式に基づいた要素の追加、集計関数やグローバル・レベル関数の追加、要素プロパティの編集および要素の削除をグラフィカルに実行できます。通常、「ダイアグラム」ビューは、データ構造を構築するために使用するビューです。

  • 「構造」ビュー - 「構造」ビューには、次の2つのモードがあります。

    「表ビュー」および「出力」

    表ビューでは、表内に要素のプロパティが表示されます。また、XML要素の別名、要素の表示名、ソート順およびNULL値の更新、ならびにオプションのリセットを行うことができます。次のイメージに、「構造」の「表ビュー」を示します。

    「出力」ビューには、生成されたXML構造がわかりやすく示されます。「出力」ビューは更新できません。図に、「出力」ビューを示します。

  • 「コード」ビュー - 「コード」ビューには、データ構造ビルダーで作成したデータ構造のコードが表示されます。このコードは、データ・エンジンに読み込まれます。コード・ビューのコンテンツは更新できます。図に、「コード」ビューを示します。

データ・セット間のリンクの作成

BI Publisherデータ・エンジンを使用すると、データソースからデータを抽出した後で、そのデータを結合したり構造化できます。

ソース側では、データを1つの結合されたデータ・セットに結合したり構造化できない場合があります。たとえば、データが異種のデータソース(Microsoft SQL ServerやOracle Databaseなど)に存在するときには、ソースではデータを結合できません。データの取得元が同一のソースだとしても、行数やページ数が数十万におよぶ可能性のある巨大なレポートやドキュメントを作成している場合には、目的のレイアウトと一致するようにデータを構造化することでドキュメント生成が最適化されます。

2つのデータ・セット間にマスター/ディテール(または、親子)関係を定義するためにリンクを作成します。リンクは、要素レベルのリンクまたはグループ・レベルのリンクとして作成できます。結果としての、階層XMLデータは同じになります。要素レベルのリンクとしてリンクを作成することをお薦めします。グループ・レベルのリンクは、以前のバージョンのOracle BI Publisherによるデータ・テンプレートとの下位互換性を維持するために用意されています。

データ・リンク(または親子関係)は、複数の問合せの結果を関連付けます。データ・リンクによって、次のようなリレーションシップを確立できます。

  • ある問合せの列と別の問合せの列の間

  • ある問合せのグループと別の問合せのグループの間(子問合せで親のデータを知る必要がある場合に役立ちます)。

要素レベルのリンクについて

要素レベルのリンクによって、2つのデータ・セット間にバインド(結合)を作成し、それらのデータ・セット間のマスター/ディテール(親子)関係を定義します。

要素レベルのリンクを作成します。データ・セット間にマスター/ディテール関係を定義するには、この方法をお薦めします。要素レベルのリンクを使用してデータ・セットをリンクさせる場合、バインド変数によって2つのデータ・セット間を結合するコードは必要ありません。

グループ・レベルのリンクについて

グループレベルのリンクは、データ・セットを階層XMLとして構造化する方法を決定しますが、データ・エンジンがマスター問合せとディテール問合せを実行するために必要な結合情報が欠落しています。

グループ・レベルのリンクを定義するときには、2つのデータ・セット間のリンクで一意のバインド変数を通じて問合せを更新する必要があります。

要素レベルのリンクの作成

データ・セットをリンクして、2つのデータ・セット間のマスター/ディテール(または親子)関係を定義します。

要素レベルのリンクを定義することで、マスターとディテールのデータ・セットに含まれる要素間のバインディングを確立できます。

  1. 要素のアクション・メニューを開いて、「リンクの作成」をクリックします。
  2. 「リンクの作成」ダイアログで、要素を選択し、「OK」をクリックしてリンクを作成します。

    「リンクの作成」ダイアログを次に示します。

要素レベルのリンクの削除

データ・セット間のグループ・レベルおよび要素レベルのリンクの両方を削除できます。

  • 次のいずれかを行います:
    • どちらかの要素のアクション・メニューを開いて、「リンクの削除」をクリックします
    • 要素のコネクタを選択して、リンクされた要素の名前を表示し、削除ボタンをクリックします。

グループ・レベルのリンクの作成

グループ・レベルのリンクでは、2つのデータ・セット間のマスター/ディテール関係を定義します。

次の図は、グループ・レベルのリンクが定義されている2つのデータ・セットを示しています。データ・セットの横に結果のXMLデータ構造が表示されます。

  1. 親グループで、「メニュー」をクリックします。
  2. 次に示されているように、「グループ・リンクの作成」をクリックします。
  3. 「グループ・リンクの作成」ダイアログで、子グループを選択して「OK」をクリックします。「リンクの作成」ダイアログを次に示します。
  4. 「メニュー」をクリックしてから「データ・セットの編集」をクリックして、問合せにバインド変数を追加します。

    次に例を示します。

    データ・セット: DEPT データ・セット: EMP
    Select DEPT.DEPTNO as DEPTID,
            DEPT.DNAME as DNAME,
            DEPT.LOC as LOC 
    from    OE.DEPT DEPT
    Select EMP.EMPNO as EMPNO,
            EMP.ENAME as ENAME,
            EMP.JOB as JOB,
            EMP.MGR as MGR,
            EMP.HIREDATE as HIREDATE,
            EMP.SAL as SAL,
            EMP.COMM as COMM,
            EMP.DEPTNO as DEPTNO 
    from    OE.EMP EMP 
    where   DEPTNO=:DEPTID

    注意:

    子問合せに一意のバインド変数を定義する必要があります。

グループ・レベルのリンクの削除

データ・セット間のグループ・レベルおよび要素レベルのリンクの両方を削除できます。

  1. 親グループで、「メニュー」をクリックします。
  2. 「グループ・リンクの削除」をクリックします。
  3. 「グループ・リンクの削除」ダイアログで、リストから「子グループ」を選択して「OK」をクリックします。

サブグループの作成

2つのデータ・セットをリンクして親子構造を作成することに加え、同じデータ・セット内の要素を、その他の要素を基準にしてグループ化することもできます。

サブグループの作成は、問合せが返すデータに、ディテール行ごとに繰り返されるヘッダー・データが含まれている場合に役立ちます。サブグループを作成すると、ドキュメント生成の効率が高まるようにXMLデータの形式を整えることができます。

  1. 要素を選択して、データ・セット内の他の要素とグループ化します。
  2. 次に示されているように、要素のアクション・メニュー・アイコンをクリックしてメニューを開き、「グループ基準」を選択します。

    これにより、表示されているデータ・セット内に新しいグループが作成されます。次の図は、要素COMPANYを基準にグループ化されているG_2データ・セットを示しています。これによって、G_3という新しいグループが作成されます。このグループには、データ・セット内の他の5つの要素が含まれています。次の図は、グループ化されたデータ・セットとその構造が「ダイアグラム」ビューに表示される様子を示しています。

    作成したグループに対して、任意のグループ・アクションを実行できます。

  3. グループ解除するには、グループのタイトル・バーの「メニュー」をクリックし、「グループ解除」をクリックします。

親グループと子グループ間での要素の移動

データ・セット内にグループを作成すると、要素のアクション・メニューに新しい2つのオプションが表示されます。このオプションを使用すると、親グループと子グループ間で要素を移動できます。

移動する要素については、その要素のアクション・アイコンをクリックしてメニューを開きます。親グループ内にある要素を子グループに移動する場合は、この要素を子グループに移動を選択します。

子グループにある要素を親グループに移動する場合は、この要素を子グループに移動を選択します。次の図では、OFFICE_DSC要素のアクション・メニューに、その要素を親グループに移動するためのオプションが表示されています。

注意:

要素を移動する前に、他の要素との依存関係について注意してください。

グループ・レベルの集計要素の作成

データ・モデル・エディタを使用すると、グループ・レベルまたはレポート・レベルでデータを集計できます。

たとえば、顧客名を基準に販売高データをグループ化すると、その販売高を集計することで各顧客の販売高の小計を求めることができます。親レベルでのみ子要素のデータを集計できます。

集計関数は、次のとおりです。

  • 平均 - 出現するすべての要素の平均を計算します。

  • 件数 - 要素の出現数を総計します。

  • 最初 - グループ内で最初に出現する要素の値を表示します。

  • 最後 - グループ内で最後に出現する要素の値を表示します。

  • 最大 - グループ内で出現するすべての要素から最高値を表示します。

  • 最小 - グループ内で出現するすべての要素から最低値を表示します。

  • サマリー - グループ内で出現するすべての要素の値を合計します。

  1. 要素を親グループの「ここに集計関数をドロップ」フィールドにドラッグします。

    次の図では、SALARY要素に基づいたグループ・レベルの集計関数をG_DEPTに作成しています。

    要素をドロップすると、親グループ内に新しい要素が作成されます。デフォルトでは、「件数」関数が適用されています。新しい集計要素の名前の横にあるアイコンによって、関数が示されます。このアイコンにカーソルをしばらく合せていると、関数が表示されます。

    次の図は、デフォルトの「件数」関数が定義された新しい集計要素CS_1を示しています。

  2. 関数を変更するには、次に示されているように、関数アイコンをクリックして利用可能な関数のリストを表示して、そのリストから関数を選択します。
  3. 要素の名前の変更など、要素のプロパティを更新するには、その要素のアクションメニュー・アイコンをクリックします。

    メニューで、「プロパティ」をクリックします。「プロパティ」ダイアログを次に示します。

    注意:

    要素の名前を変更する際には注意が必要です。その要素は、他の要素との依存関係を持つことがあります。

    次の表で説明するプロパティを、必要に応じて設定します。

    プロパティ 説明

    列名

    BI Publisherのデータ・モデル・エディタで要素に割り当てた内部名です。この名前は、更新できません。

    別名(XMLタグ名)

    Oracle BI Publisherは、デフォルトのタグ名をXMLデータ・ファイル内の要素に割り当てます。このタグ名は、データ・ファイル内でよりわかりやすい名前に更新できます。

    表示名

    この「表示名」がレポート・デザイン・ツールに示されます。この名前は、ビジネス・ユーザーにとってわかりやすくなるように更新してください。

    関数

    目的の関数を選択していないときには、このリストから関数を選択できます。

    データ型

    BI Publisherは、関数に応じてデフォルトのデータ型(IntegerまたはDouble)を割り当てます。一部の関数には、Floatのオプションも選択できます。

    Null時の値

    関数から返された値がNULLの場合は、データにNULLが含まれないようにするために、ここにデフォルト値を指定できます。

    丸め

    デフォルトでは、値は小数第3位に丸められます。必要に応じて、丸めの値を変更できます。

    リセットしないでください

    デフォルトでは、関数はグループ・レベルでリセットします。たとえば、データ・セットがDEPARTMENT_IDを基準にグループ化されているときに、SALARYに対する合計関数が定義してあると、DEPARTMENT_IDデータのグループごとに合計がリセットされ、その部門にのみSALARYの合計を求めることになります。グローバル・レベルでのみ関数をリセットする必要があり、グループ・レベルではリセットする必要がない場合は、「リセットしないでください」を選択します。これにより、すべての部門のSALARYの合計が求められます。このプロパティは、グループ・レベルの関数専用です。

グループ・フィルタの作成

フィルタを使用すると、問合せで選択されたレコードを条件に応じて削除することができます。

グループに設定できるフィルタには、次の2種類があります。

  • 式 - 事前定義済の関数と演算子を使用して式を作成します。

  • PL/SQLファンクション - カスタム・フィルタを作成します。

  1. 「メニュー」をクリックし、「グループ・フィルタの作成」を選択します。

    次に示されているように、「グループ・フィルタの編集」ダイアログが表示されます。

  2. 「グループ・フィルタ・タイプ」で、「式」またはPL/SQLを選択します。

    注意:

    PL/SQLフィルタの場合は、最初にデータ・モデルのプロパティで「Oracle DBデフォルト・パッケージ」としてPL/SQLパッケージを指定する必要があります。データ・モデルのプロパティの設定を参照してください。

  3. 次のように、フィルタを入力します。

    • 式を入力するには、要素を選択して、その要素を「グループ・フィルタ」定義ボックスに移動するために送りボタンをクリックします。事前定義済の関数と演算子をクリックして、それらを「グループ・フィルタ」ボックスに挿入します。

      使用可能な関数の説明は、「関数リファレンス」を参照してください。

      「式の検証」をクリックして、エントリが有効であることを確認します。

    • PL/SQL関数を入力するには、「使用可能」ボックスからPL/SQLパッケージを選択して、その関数を「グループ・フィルタ」ボックスに移動するために送りボタンをクリックします。

      デフォルト・パッケージ内のPL/SQL関数は、ブール型を返すものにする必要があります。

次に示されているように、グループ・フィルタを追加すると、データ・セット・オブジェクトにはフィルタ・インジケータが表示されます。

要素レベルの関数の実行

様々な関数を要素レベルで実行できます。

要素のプロパティの設定

個別の要素に対してプロパティを設定できます。

これらのプロパティは、「構造」ビューからも編集できます。複数の要素のプロパティを更新する必要がある場合は、「構造」ビューを使用したほうが効率的になります。構造ビューを使用したデータ構造の編集を参照してください。

要素ダイアログを使用して要素レベルのプロパティを設定するには:

  1. 要素のアクション・メニュー・アイコンをクリックします。メニューから、「プロパティ」を選択します。「プロパティ」ダイアログを次に示します。
  2. 必要に応じてプロパティを設定します。
    プロパティ 説明

    別名

    BI Publisherは、デフォルトのタグ名をXMLデータ・ファイル内の要素に割り当てます。このタグ名は、データ・ファイル内でよりわかりやすい名前に更新できます。

    表示名

    この「表示名」がレポート・デザイン・ツールに示され、列名がレポートに示されます。この名前は、ビジネス・ユーザーにとってわかりやすくなるように更新してください。

    データ型

    BI Publisherはデフォルトのデータ型を割り当てます。有効な値はString、Date、Integer、Double、Floatです。

    ソート順序

    グループ内のXMLデータを、1つ以上の要素でソートできます。たとえば、従業員のデータ・セット内で部門と管理職がグループ化されている場合、部門でXMLデータをソートできます。それぞれの部門内では、管理職によってデータをグループ化またはソートできます。また、それぞれの管理職サブグループ内では、給与によって従業員をソートできます。要素が親グループ内に存在しない場合、「ソート順序」プロパティは使用できません。

    Null時の値

    発生した要素の値がNULLの場合は、データにNULLが含まれないようにするために、ここにデフォルト値を指定できます。

データのソート

ソートは、親グループのブレーク列に対してのみサポートされます。

たとえば、従業員のデータ・セットが部門と管理職でグループ化されている場合は、部門によってXMLデータをソートできます。それぞれの部門内では、管理職によってデータをグループ化およびソートできます。最終的なレポートで、どのようにデータをソートしておく必要があるかがわかっている場合は、データ生成時にソートを指定するとドキュメント生成が最適化されます。

グループにソート順序を適用するには:

  1. ソート基準にする要素のアクション・メニュー・アイコンをクリックします。メニューから、「プロパティ」を選択します。
  2. 「ソート順序」を選択します。

    次の図は、「ソート順序」リストが表示されたDEPARTMENT_ID要素の「プロパティ」ダイアログを示しています。

グループ・レベルの関数の実行

この項では、グループ機能の実行方法について説明します。

内容は次のとおりです。

グループのアクション・メニュー

「メニュー」ボタンはグループ・レベルで使用でき、様々な機能を実行できるようになります。

グループ・レベルの「メニュー」ボタンを次に示します。

データ・セットの編集

データ・セット・エディタを起動して、選択したデータ・セットのプロパティを変更します。

  • 「データ・セットの編集」をクリックして、データ・セット・エディタを開きます。

詳細は、データ・セットの作成からデータ・セットのタイプに該当する項を参照してください。

グループからの要素の削除

必要に応じてグループから要素を削除できます。

グループから要素を削除するには:

  • 要素の行で、メニューをクリックして、「要素の削除」をクリックします。次に例を示します。

注意:

削除できる要素は、グループ関数(SumやCountなど)として追加した要素か、式として追加した要素のみです。

グループのプロパティの編集

必要に応じてグループのプロパティを編集します。

  1. 「メニュー」をクリックし、「プロパティ」を選択します。
  2. 次に示されているように、「グループ名」または「表示名」を編集して「OK」をクリックします。

グローバル・レベルの関数の実行

「グローバル・レベル関数」オブジェクトを使用すると、最上位のレポート・レベルでレポート・データ・セットに要素を追加できます。

最上位レベル・データとして、次のタイプの要素を追加できます。

  • 集計関数に基づく要素

  • 式に基づく要素

  • PL/SQL文に基づく要素(Oracle Databaseデータソースの場合)

注意:

小数を返す計算要素と式にはデータ型に「整数」を選択すると、データが切り捨てられなくなります。

「グローバル・レベル関数」オブジェクトを次に示します。集計関数に基づく要素を追加するには、オブジェクトの「ここに集計関数をドロップ」領域に要素をドラッグします。式またはPL/SQLに基づく要素を追加するには、「メニュー」をクリックし、該当するアクションを選択します。

グローバル・レベル集計関数の追加

選択した要素に基づいてグローバル・レベルの集計関数を追加できます。

使用可能な関数は次のとおりです。

  • Count

  • Average

  • First

  • Last

  • Maximum

  • Minimum

  • Summary

  1. データ・セットからデータ要素をドラッグして、「グローバル・レベル関数」オブジェクトの「ここに集計関数をドロップ」領域にドロップします。

    たとえば、次のイメージではSalary要素に基づくグローバル・レベル集計関数を作成しています。

  2. マウスのボタンを放すと、データ・モデル・エディタによって、集計要素にデフォルト名が割り当てられます。また、デフォルト関数として、「件数」が割り当てられます。

    次の図では、新しいグローバル・レベルの要素CS_1の関数を「件数」から「平均」に変更しています。

  3. 新しい要素名の左側にある関数アイコンをクリックして、リストから関数を選択します。
  4. デフォルト名を変更するには、要素名の右側のアクション・アイコンをクリックし、「プロパティ」をクリックして「プロパティの編集」ダイアログを開きます。このダイアログで使用できるプロパティの詳細は、要素のプロパティの設定を参照してください。

グループ・レベルまたはグローバル・レベルの要素の式による追加

グループ・レベルまたはグローバル・レベルの集計関数を式により追加できます。

  1. グループ・レベル要素を追加する場合は、「グループ」オブジェクトの「メニュー」をクリックし、「式による要素の追加」を選択します。
  2. 「式による要素の追加」ダイアログ内のフィールドおよび演算子に入力します。
  3. 「表示名」フィールドで、ビジネス・ユーザーにわかりやすい名前を入力します。
  4. (オプション)データ型を選択します。
  5. 送り矢印を使用して、式に必要なデータ要素を「使用可能」ボックスから「式」ボックスに移動します。
  6. 演算子をクリックして、その演算子を「式」ボックスに挿入するか、関数リストから選択します。
  7. 式を検証するには、「式の検証」 をクリックします。

PL/SQLによるグローバル・レベル要素の追加

このPL/SQL関数は、VARCHARデータ型を返す必要があります。

  1. 「プロパティ」ページで、PL/SQLパッケージをデータ・モデルのプロパティの「Oracle DBデフォルト・パッケージ」として指定します。
  2. 「グローバル・レベル関数」オブジェクトの「メニュー」をクリックし、「PL/SQLによる要素の追加」をクリックします。
  3. 「PL/SQLによる要素の追加」ダイアログに、次のフィールドを入力します:
    • 名前 - 要素のわかりやすい名前を入力します。
    • 表示名 - 表示名を入力します。これがレポート・デザイン・ツールに示されます。ビジネス・ユーザーにわかりやすい名前を入力します。
    • データ型 - 「文字列」を選択します。
  4. 「使用可能」ボックスからPL/SQLパッケージを選択し、送りボタンをクリックしてその関数を「グループ・フィルタ」ボックスに移動します。

構造ビューを使用したデータ構造の編集

「構造」ビューを使用すると、データ・モデルの構造を表示確認できます。

「データソース」列には、日付要素が階層ツリー形式で表示されます。この階層ツリーは、閉じたり開いたりできます。このビューを使用して、データ・モデル構造の正確さを検証し、次の編集を実行します:

「構造」ビューを次に示します。

要素名の変更

「構造」ページを使用して、データ・モデル内の要素に対して、ユーザーにとってわかりやすい名前を定義します。

XML要素タグの名前(「XML表示」)と、レポート・レイアウト・ツールに表示される名前(「ビジネス・ビュー」)のどちらも変更できます。次の図に、Data Source要素の名前を、使用しやすい「ビジネス・ビュー」の名前に変更する方法を示します。

NULL要素に対する値の追加

「構造」では、データ・モデルが要素にNULL値を返した場合に、その要素に使用する値を入力することもできます。

  • 使用する値を、その要素の「Null時の値」フィールドに入力します。

関数リファレンス

次の表では、「式による要素の追加」ダイアログと「グループ・フィルタの編集」ダイアログでサポートされている使用可能な関数について説明しています。

関数 説明 構文

IF

論理IF演算子

boolean_exprを評価して、boolean_exprがtrueの場合はtrue_returnを返し、boolean_exprがfalseの場合はfalse_returnを返します。

IF (boolean_expr, true_return, false_return)

IF (G_1.DEPARTMENT_ID == 10, 'PASSED', 'FAIL')は、DEPARTMENT_ID = 10の場合に'PASSED'を返し、それ以外の場合は'FAIL'を返します。

NOT

論理NOT演算子

boolean_exprを評価して、boolean_exprがfalseの場合にtrueを返します。

STRING(NOT(boolean_expr))

STRING(NOT(G_1.JOB_ID == 'MANAGER'))は、JOB_ID = MANAGERの場合に'TRUE'を返し、それ以外の場合は'FALSE'を返します。

AND

論理AND演算子

boolean_expr1とboolean_expr2を評価して、両方のブール式がtrueの場合にtrueを返し、それ以外の場合はfalseを返します。

STRING(AND(boolean_expr1, boolean_expr2, ...))

STRING(AND (G_1.JOB_ID == 'MANAGER', G_1.DEPARTMENT_ID == 10))は、JOB_ID = MANAGERとDEPARTMENT_ID = 10の両方がtrueの場合に'TRUE'を返し、それ以外の場合は'FALSE'を返します。

&&

論理AND演算子

boolean_expr1とboolean_expr2を評価して、両方のブール式がtrueの場合にtrueを返し、それ以外の場合はfalseを返します。

STRING(boolean_expr1 && boolean_expr2)

STRING(G_1.JOB_ID == 'MANAGER' && G_1.DEPARTMENT_ID == 10)

JOB_ID = MANAGERとDEPARTMENT_ID = 10の両方がtrueの場合に'TRUE'が返され、それ以外の場合は'FALSE'が返されます。

||

論理OR演算子

boolean_expr1とboolean_expr2を評価して、両方のブール式がtrueの場合にtrueを返し、それ以外の場合はfalseを返します。

STRING(OR(boolean_expr1, boolean_expr2)

STRING(OR (G_1.JOB_ID == 'MANAGER', G_1.DEPARTMENT_ID == 10))

JOB_ID = MANAGERまたはDEPARTMENT_ID = 10がtrueの場合に'TRUE'が返され、それ以外の場合は'FALSE'が返されます。

MAX

セット内の要素の最大値を戻します。

MAX(expr1, expr2, expr3, ...)

MAX(G1_Salary, 10000)

salaryと10000のうち、大きい方が返されます。

MIN

セット内の要素の最小値を戻します。

MIN(expr1, expr2, expr3, ...)

MIN(G1_Salary,5000)

salaryと5000のうち、小さい方が返されます。

ROUND

数値を、指定の小数点以下桁数で丸めた結果を返します。

ROUND(number[,integer])

integerが省略された場合は、numberの小数点以下が丸められます。

integerが負の場合は、整数部の桁が丸められます。

integerは整数でなければなりません。

ROUND(2.777)

3が返されます

ROUND(2.777, 2)

2.78が返されます

FLOOR

n以下の最小整数を返します。

FLOOR(n)

FLOOR(2.777)

2が返されます

CEILING

n以上の最大整数を返します。

CEILING(n)

CEILING(2.777)

3が返されます

ABS

nの絶対値を返します。

ABS(n)

ABS(-3)

3が返されます

AVG

式の平均値を返します。

AVG(expr1, expr2, expr3, ...)

AVG(G_1.SALARY,G_1.COMMISSION_PCT*G_1.SALARY)

SALARYとCOMMISSIONの平均が返されます。

たとえば、SALARY = 14000でCOMMISSION_PCT = .4の場合は、式を評価した結果は9800.0となります。

LENGTH

配列の長さを返します。

LENGTH関数は、入力文字セットの文字数によって長さを計算します。

charがNULLの場合、この関数はNULLを返します。

charが配列の場合、この関数は配列の長さを返します。

LENGTH(expr)

配列の長さを返す例であるLENGTH{1, 2, 4, 4})は4を返します。

文字列の長さを返す例: LENGTH('countries')は9を返します。

SUM

式の値の合計を返します。

SUM(expr1, expr2, ...)

SUM (G_1.SALARY, G_1.COMMISSION_PCT*G_1.SALARY)

salaryとcommissionの合計が返されます。

たとえば、SALARY = 14000でCOMMISSION_PCT =.4の場合は、式を評価した結果は19,600.0となります。

NVL

問合せの結果の中のnull (空白として返される)を文字列で置き換えます。

NVL(expr1, expr2)

expr1がNULLの場合、NVLはexpr2を返します。

expr1がNULLでない場合、NVLはexpr1を返します。

NVL(G_1.COMMISSION_PCT, .3)は、G_1.COMMISSION_PCTがnullのときに.3を返します。

CONCAT

char1とchar2を連結したものを返します。

CONCAT(char1, char2)

CONCAT(CONCAT(First_Name, ' '), Last_Name)

First_Name = JoeでLast_Name = Smithの場合は

Joe Smithが返されます

STRING

charを文字列データ型として返します。

STRING(expr)

STRING(G1_SALARY)

salary = 4400の場合は

4400が文字列として返されます。

SUBSTRING

文字列から部分文字列を取り出します。

SUBSTRING(string, start_pos, end_pos)

stringは、ソース文字列です。

start_posは取出しを開始する位置です。

end_posは文字列の取出しを終了する位置です(省略可能)。

SUBSTRING('this is a test', 5, 7)は「is」(つまり、文字6から7まで)を返し、SUBSTRING('this is a test', 5)は「is a test」を返します。

INSTR

文字列の中の部分文字列の、最初の文字の位置を返します。

INSTR(string1, string2)

string1は検索対象の文字列です。

string2は、string1内で検索する部分文字列です。

INSTR('this is a test', 'is a')

5が返されます

DATE

有効なJava日付文字列を、標準書式の日付データ型に変換します。

DATE(char, format_string)

(1) charは任意の有効なJava日付文字列(例: 13-JAN-2013)で、(2) format_stringは入力文字列のJava日付書式(例: dd-MMM-yyyy)です。入力と書式の文字列は、有効なJava日付書式文字列であることが必要です。

DATE(01-Jan-2013,'dd-MMM-yyyy')

2013-01-01T08:00:00.000+00:00が返されます

FORMAT_DATE

Java日付書式の日付引数を、書式設定済の文字列に変換します。

FORMAT_DATE(date,format_string)

FORMAT_DATE(SYSDATE,'dd-MMM-yyyy')

SYSDATEの値が2013-01-24T16:32:45.000-08:00の場合は、24-Jan-2013が返されます。

FORMAT_NUMBER

数値または数値文字列を、指定された数値書式の文字列に変換します。

FORMAT_NUMBER(number,format_string)

FORMAT_NUMBER(SOME_NUMBER, '$9,999.00')

SOME_NUMBER = 12345.678の場合は、$12,345.68が返されます。

DECODE

式の値を、指定された検索および置換の条件に基づいて別の値で置き換えます。

DECODE(expr, search, result [, search, result]...[, default])

DECODE(PROD_FAMILY_CODE,100,'Colas',200,'Root Beer',300,'Cream Sodas',400,'Fruit Sodas','Other')は、(1) PROD_FAMILY_CODE = 100の場合に'Colas'を返し、(2) PROD_FAMILY_CODE = 200の場合に'Root Beer'を返し、(3) PROD_FAMILY_CODE = 300の場合に'Cream Sodas'を返し、(4) PROD_FAMILY_CODE = 400の場合に'Fruit Sodas'を返し、(5) PROD_FAMILY_CODEの値がそれ以外の場合は'Other'を返します。

REPLACE

文字列内の一連の文字を、別の文字のセットで置き換えます。

REPLACE(expr,string1,string2)

string1は検索する文字列で、string2は置き換える文字列です。

REPLACE(G_1.FIRST_NAME,'B','L')

G_1.FIRST_NAME = Barryの場合は

Larryが返されます