Oracle® Fusion Middleware Oracle Business Intelligence Publisherデータ・モデリング・ガイド 11gリリース1(11.1.1) B66712-05 |
|
![]() 前へ |
![]() 次 |
この章では、グループ、リンク、グループ・フィルタ、およびグループレベルやグローバルレベルの関数など、BI Publisherのデータ・エンジンによって返されるデータを構造化するための手法について説明します。
この章の内容は次のとおりです。
データ・モデルのダイアグラムは、複数のデータ・セットに基づいたレポート用のデータ・セット、ブレーク・グループおよび合計の定義を短時間で簡単に実行するために役立ちます。
データ・セット(または、問合せ)をリンクしていない場合、データ・エンジンはマルチパートの関連付けられていない問合せデータ・セットを生成します。
たとえば、図3-1に示すデータ・モデルでは、一方の問合せで製品を選択して、もう一方の問合せで顧客を選択しています。製品と顧客の間には、リレーションシップはありません。
この結果として、データ構造は図3-2のようになります。
多くの場合、データ・セット(または、問合せ)の一部からフェッチされるデータは、別の部分からフェッチされるデータによって判断されます。通常、これは、マスター/ディテール関係または親子関係と呼ばれ、2つのデータ・セット(または問合せ)間のデータ・リンクで定義されます。マスター/ディテールのデータ・モデルを実行すると、マスター(または親)問合せの行ごとにディテール(または子)問合せが実行され、一致する行のみが取り出されます。
図3-3に示す例では、2つのデータ・セットが要素Customer IDでリンクされています。Ordersデータは、Customersデータ・セットの子を設定します。
これにより、データ構造は図3-4のようになります。
データ・モデル内のデータ・セットまたは問合せの数は、できるかぎり少なくしてください。一般的に、データ・セットおよび問合せの数を少なくするほど、データ・モデルの実行が高速になります。複数問合せデータ・モデルのほうが理解しやすいことが多いようですが、単一問合せデータ・モデルのほうが通常は速く実行できます。親子関係のある問合せでは、親ごとに子問合せが実行されることを理解しておく必要があります。
複数問合せデータ・モデルは、次の場合にのみ使用してください。
直接サポートされていないタイプの問合せ(SQL問合せなど)の関数を実行する場合。
複合ビュー(分散問合せ、GROUP BY問合せなど)をサポートする場合。
ビューがないときやビューが必要なときにビューをシミュレートする場合。
データ・モデル・エディタを使用すると、複数のデータ・セットからのデータを単一のXMLデータ構造に結合できます。複数のデータソースからのデータ・セットは、シーケンシャルXMLとしてマージするか、行レベルでマージすることで、単一の結合された階層XMLを作成できます。データ・モデル・エディタを使用すると、各タイプ(SQL問合せ、OLAP (MDX問合せ)、LDAPおよびMicrosoft Excel)のデータ・セットからのデータを簡単に結合できます。
データ・モデル・エディタがサポートする機能は、次のとおりです。
グループ・データ - グループは、レポート内の列を編成するために作成します。グループを使用すると、1つの問合せのデータをいくつかのセットに分けることと、問合せのデータをフィルタすることの2つが可能となります。
問合せを作成すると、データ・エンジンはその問合せで選択される列を含むグループを作成します。ユーザーは、グループを作成して、データ・モデル内に現れるデータの階層を変更できます。グループは、主に、一部の列をそれ以外の列とは別に扱う必要があるときに使用します。たとえば、小計を生成する場合やブレークを作成する場合に、グループを作成します。
データのリンク - 複数のレベルでデータをグループ化するために、データ・セット間のマスター/ディテール・リンクを定義します。
データの集約 - グループ・レベルの合計と小計を生成します。
データの変換 - ビジネス用語やレポート要件に適合するように、ソース・データを変換します。
計算の作成 - 基のデータソースではレポートに必要なデータ値が得られない場合に、そのデータ値を計算します。
データ・モデル・エディタには、要素レベル、グループ・レベルおよびグローバル・レベルの関数が用意されています。すべてのデータ・セットのタイプですべての関数をサポートするわけではないことに注意してください。制限事項については、使用するデータ・セットのタイプに付記されている「重要なメモ」の項を参照してください。図3-5は、データ・モデル・エディタで使用できる機能とアクションの一部について示しています。
デフォルトでは、ユーザーが作成したデータ・セットは個別のオブジェクトとして「ダイアグラム」ビューに示されます(図3-6を参照)。
データ・セットの構造ビルダーには、次の3つのビューがあります。
ダイアグラム・ビュー - ユーザーのデータ・セットが表示されます。また、リンクやフィルタの作成、式に基づいた要素の追加、集計関数やグローバルレベル関数の追加、要素プロパティの編集および要素の削除をグラフィカルに実行できます(図3-6を参照)。通常、「ダイアグラム」ビューは、データ構造を構築するために使用するビューです。
構造ビュー - このビューには、次の2つのモードがあります。
「表ビュー」および「出力」
表ビューでは、表内に要素のプロパティが表示されます。また、XML要素の別名、要素の表示名、ソート順およびNULL値の更新やオプションのリセットを実行できます。図3-7に、「構造」の「表ビュー」を示します。
「出力」ビューには、生成されたXML構造がわかりやすく示されます。「出力」ビューは更新できません。図3-8に、「出力」ビューを示します。
コード・ビュー - このビューには、データ構造ビルダーで作成したデータ構造のコードが表示されます。このコードが、データ・エンジンに読み込まれます。「コード」ビューは更新できません。図3-9に、「コード」ビューを示します。
ソース側では、データを1つの結合されたデータ・セットに結合したり構造化できない場合があります。たとえば、データが異種のデータソース(Microsoft SQL ServerとOracleデータベースなど)に存在するときには、ソースではデータを結合できません。BI Publisherデータ・エンジンを使用すると、データソースからデータを抽出した後で、そのデータを結合したり構造化できます。データの取得元が同一のソースだとしても、行数やページ数が数十万におよぶ可能性のある巨大なレポートやドキュメントを作成している場合には、目的のレイアウトと一致するようにデータを構造化することでドキュメント生成が最適化されます。
2つのデータ・セット間にマスター/ディテール(または、親子)関係を定義するためにリンクを作成します。リンクは、要素レベルのリンクまたはグループ・レベルのリンクとして作成できます。結果としての、階層XMLデータは同じになります。要素レベルのリンクとしてリンクを作成することをお薦めします。グループ・レベルのリンクは、以前のバージョンのBI Publisherによるデータ・テンプレートとの下位互換性を維持するために用意されています。
データ・リンク(または親子関係)は、複数の問合せの結果を関連付けます。データ・リンクによって、次のようなリレーションシップを確立できます。
ある問合せの列と別の問合せの列の間
ある問合せのグループと別の問合せのグループの間(これは、子問合せで親のデータを知る必要がある場合に役立ちます)
要素レベルのリンクによって、2つのデータ・セット間にバインド(結合)を作成し、それらのデータ・セット間のマスター/ディテール(親子)関係を定義します。データ・セット間にマスター/ディテール関係を定義するには、この方法をお薦めします。データ・セットをリンクする最も簡単な方法は、要素レベルのリンクを作成することです。このリンクには、バインド変数によって2つのデータ・セット間を結合するコードが必要ないためです。
データ・セットをリンクして、2つのデータ・セット間のマスター/ディテール(または親子)関係を定義します。要素レベルのリンクを定義することで、マスターとディテールのデータ・セットに含まれる要素間のバインディングを確立できます。
要素レベルのリンクを定義するには、次のいずれかの手順を実行します。
要素のアクション・メニューを開いて、「リンクの作成」をクリックします。
「リンクの作成」ダイアログが開き、他のデータ・セットの要素が表示されます。要素を選択し、「OK」をクリックしてリンクを作成します。図3-11に、「リンクの作成」ダイアログを示します。
別の方法として、親グループの要素をクリックして、その要素を子グループ内の対になる要素にドラッグします(図3-12を参照)。
親データ・セットの要素を子データ・セットの対になる要素にドロップすると、そのデータ・セット間にコネクタが表示されます。カーソルをコネクタにしばらく合せておくと、リンクが表示されます(図3-13を参照)。
グループ・レベルのリンクでは、2つのデータ・セット間のマスター/ディテール関係を定義します。次の図は、グループ・レベルのリンクが定義されている2つのデータ・セットを示しています。データ・セットの横に結果のXMLデータ構造が示されます(図3-14を参照)。
グループ・レベルのリンクを定義するには:
「グループ・リンクの作成」をクリックします(図3-15を参照)。
「グループ・リンクの作成」ダイアログで、子グループを選択して「OK」をクリックします。「リンクの作成」ダイアログを図3-16に示します。
「メニュー」をクリックしてから「データ・セットの編集」をクリックして、問合せにバインド変数を追加します。
表3-1に例を示します。
図3-1 例: データ・セットの編集
データ・セット: 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 |
重要: 一意のバインド変数が子問合せに定義されている必要があります。 |
2つのデータ・セットをリンクして親子構造を作成することに加え、同じデータ・セット内の要素を、その他の要素を基準にしてグループ化することもできます。これは、問合せが返すデータに、ディテール行ごとに繰り返されるヘッダー・データが含まれている場合に役立ちます。サブグループを作成すると、ドキュメント生成の効率が高まるようにXMLデータの形式を整えることができます。
サブグループを作成するには:
要素を選択して、その要素をデータ・セット内の他の要素によってグループ化します。
要素のアクション・メニュー・アイコンをクリックしてメニューを開き、「グループ基準」を選択します(図3-17を参照)。
これにより、表示されているデータ・セット内に新しいグループが作成されます。次の図は、要素COMPANYを基準にグループ化されているG_3データ・セットを示しています。これによって、G_4という新しいグループが作成されます。このグループには、データ・セット内の他の4つの要素が含まれています。図3-18は、グループ化されたデータ・セットとその構造が「ダイアグラム」ビューに表示される様子を示しています。
新しく作成したグループに対して、任意のグループ・アクションを実行できます。
グループのタイトル・バーの「メニュー」をクリックし、「グループ解除」をクリックします。
データ・セット内にグループを作成すると、要素のアクション・メニューに新しい2つのオプションが表示されます。このオプションを使用すると、親グループと子グループ間で要素を移動できます。
移動する要素については、その要素のアクション・アイコンをクリックしてメニューを開きます。親グループ内にある要素を子グループに移動する場合は、この要素を子グループに移動を選択します。
子グループにある要素を親グループに移動する場合は、この要素を子グループに移動を選択します。図3-19では、OFFICE_DSC要素のアクション・メニューに、その要素を親グループに移動するためのオプションが表示されています。
重要: 要素を移動する前に、他の要素との依存関係について注意してください。 |
データ・モデル・エディタを使用すると、グループ・レベルまたはレポート・レベルでデータを集計できます。たとえば、顧客名を基準に販売高データをグループ化すると、その販売高を集計することで各顧客の販売高の小計を求めることができます。親レベルでのみ子要素の集計を求めることができることに注意してください。
集計関数は、次のとおりです。
平均 - 出現するすべての要素の平均を計算します。
件数 - 要素の出現数を総計します。
最初 - グループ内で最初に出現する要素の値を表示します。
最後 - グループ内で最後に出現する要素の値を表示します。
最大 - グループ内で出現するすべての要素から最高値を表示します。
最小 - グループ内で出現するすべての要素から最低値を表示します。
サマリー - グループ内で出現するすべての要素の値を合計します。
グループ・レベルの集計要素を作成するには:
要素を親グループの「ここに集計関数をドロップ」フィールドにドラッグします。
図3-20では、SALARY要素に基づいたグループ・レベルの集計関数をG_DEPTに作成しています。
要素をドロップすると、親グループ内に新しい要素が作成されます。デフォルトでは、「件数」関数が適用されています。新しい集計要素の名前の横にあるアイコンによって、関数が示されます。このアイコンにカーソルをしばらく合せていると、関数が表示されます。
図3-21は、デフォルトの「件数」関数が定義された新しい集計要素CS_1を示しています。
関数を変更するには、関数アイコンをクリックして利用可能な関数のリストを表示して、そのリストから関数を選択します(図3-22を参照)。
要素の名前の変更など、要素のプロパティを更新するには、その要素のアクションメニュー・アイコンをクリックします。メニューで、「プロパティ」をクリックします。「プロパティ」ダイアログが表示されます(図3-23を参照)。
重要: 要素の名前を変更する際には注意が必要です。その要素は、他の要素との依存関係を持つことがあります。 |
表3-2で説明するプロパティを、必要に応じて設定します。
図3-2 要素のプロパティ
プロパティ | 説明 |
---|---|
列名 |
BI Publisherのデータ・モデル・エディタで要素に割り当てた内部名です。この名前は、更新できません。 |
別名(XMLタグ名) |
BI Publisherは、デフォルトのタグ名をXMLデータ・ファイル内の要素に割り当てます。このタグ名は、データ・ファイル内でよりわかりやすい名前に更新できます。 |
表示名 |
この「表示名」がレポート・デザイン・ツールに示されます。この名前は、ビジネス・ユーザーにとってわかりやすくなるように更新してください。 |
関数 |
目的の関数を選択していないときには、このリストから関数を選択できます。 |
データ型 |
BI Publisherは、関数に応じてデフォルトのデータ型(IntegerまたはDouble)を割り当てます。一部の関数には、Floatのオプションも選択できます。 |
Null時の値 |
関数から返された値がNULLの場合は、データにNULLが含まれないようにするために、ここにデフォルト値を指定できます。 |
丸め |
デフォルトでは、値は小数第3位に丸められます。必要に応じて、丸めの値を変更できます。 |
リセットしないでください |
デフォルトでは、関数はグループ・レベルでリセットします。たとえば、データ・セットがDEPARTMENT_IDを基準にグループ化されているときに、SALARYに対する合計関数が定義してあると、DEPARTMENT_IDデータのグループごとに合計がリセットされ、その部門にのみSALARYの合計を求めることになります。グローバル・レベルでのみ関数をリセットする必要があり、グループ・レベルではリセットする必要がない場合は、「リセットしないでください」を選択します。これにより、すべての部門のSALARYの合計が求められます。このプロパティは、グループ・レベルの関数専用です。 |
フィルタを使用すると、問合せで選択されたレコードを条件に応じて削除することができます。グループに設定できるフィルタには、次の2種類があります。
式 - 事前定義済の関数と演算子を使用して式を作成します。
PL/SQLファンクション - カスタム・フィルタを作成します。
グループ・フィルタを作成するには:
「メニュー」をクリックし、「グループ・フィルタの作成」を選択します。図3-24に示すように、「グループ・フィルタの編集」ダイアログが表示されます。
「グループ・フィルタ・タイプ」で、「式」またはPL/SQLを選択します。
注意: PL/SQLフィルタの場合は、最初にデータ・モデルのプロパティで「Oracle DBデフォルト・パッケージ」としてPL/SQLパッケージを指定する必要があります。第1.7項「データ・モデルのプロパティの設定」を参照してください。 |
次のように、フィルタを入力します。
式を入力するには、要素を選択して、その要素を「グループ・フィルタ」定義ボックスに移動するために送りボタンをクリックします。事前定義済の関数と演算子をクリックして、それらを「グループ・フィルタ」ボックスに挿入します。
使用可能な関数の説明は、第3.17項「関数リファレンス」を参照してください。
「式の検証」をクリックして、エントリが有効であることを確認します。
PL/SQL関数を入力するには、「使用可能」ボックスからPL/SQLパッケージを選択して、その関数を「グループ・フィルタ」ボックスに移動するために送りボタンをクリックします。
デフォルト・パッケージ内のPL/SQL関数は、ブール型を返すものにする必要があります。
グループ・フィルタを追加すると、データ・セット・オブジェクトにはフィルタ・インジケータが表示されます(図3-25を参照)。
データ・セットの「メニュー」をクリックします。
目的のアクションを選択します。
グループ・フィルタを編集するには、「グループ・フィルタの編集」を選択して、編集用の「グループ・フィルタ」ダイアログを開きます。
グループ・フィルタを削除するには、「グループ・フィルタの削除」を選択します。
サブグループを作成するために、要素を基準にしたグループ化。詳細は、第3.7項「サブグループの作成」を参照してください。
データ・セット間での要素レベルのリンクの作成。詳細は、第3.5項「要素レベルのリンクの作成」を参照してください。
要素のプロパティの設定。詳細は、第3.12項「要素のプロパティの設定」を参照してください。
個別の要素に対してプロパティを設定できます。これらのプロパティは、「構造」ビューからも編集できます。複数の要素のプロパティを更新する必要がある場合は、「構造」ビューを使用したほうが効率的になります。第3.16項「構造ビューを使用したデータ構造の編集」を参照してください。
要素ダイアログを使用して要素レベルのプロパティを設定するには:
要素のアクション・メニュー・アイコンをクリックします。メニューから、「プロパティ」を選択します。「プロパティ」ダイアログが表示されます(図3-26を参照)。
プロパティを必要に応じて設定します(詳細は、表3-3を参照)。
図3-3 要素のプロパティ
プロパティ | 説明 |
---|---|
別名 |
BI Publisherは、デフォルトのタグ名をXMLデータ・ファイル内の要素に割り当てます。このタグ名は、データ・ファイル内でよりわかりやすい名前に更新できます。 |
表示名 |
この「表示名」がレポート・デザイン・ツールに示されます。この名前は、ビジネス・ユーザーにとってわかりやすくなるように更新してください。 |
データ型 |
BI Publisherは、関数に応じてデフォルトのデータ型(IntegerまたはDouble)を割り当てます。一部の関数には、Floatのオプションも選択できます。 |
ソート順序 |
グループ内のXMLデータを、1つ以上の要素でソートできます。たとえば、従業員のデータ・セット内で部門と管理職がグループ化されている場合、部門でXMLデータをソートできます。それぞれの部門内では、管理職によってデータをグループ化またはソートできます。また、それぞれの管理職サブグループ内では、給与によって従業員をソートできます。要素が親グループ内に存在しない場合、「ソート順序」プロパティは使用できません。 |
Null時の値 |
関数から返された値がNULLの場合は、データにNULLが含まれないようにするために、ここにデフォルト値を指定できます。 |
ソートは、親グループのブレーク列に対してのみサポートされます。たとえば、従業員のデータ・セットが部門と管理職でグループ化されている場合は、部門によってXMLデータをソートできます。それぞれの部門内では、管理職によってデータをグループ化およびソートできます。最終的なレポートで、どのようにデータをソートしておく必要があるかがわかっている場合は、データ生成時にソートを指定するとドキュメント生成が最適化されます。
ソート基準にする要素のアクション・メニュー・アイコンをクリックします。メニューから、「プロパティ」を選択します。
「ソート順序」を選択します。
図3-27は、「ソート順序」リストが表示されたDEPARTMENT_ID要素の「プロパティ」ダイアログを示しています。
この項では、グループ機能の実行方法について説明します。内容は次のとおりです。
「メニュー」ボタンがグループ・レベルにあり、このボタンから次の操作を実行できます。
グループのリンクの作成および削除。詳細は、第3.6項「グループ・レベルのリンクの作成」を参照してください。
グループ・フィルタの作成、編集および削除。詳細は、第3.10項「グループ・フィルタの作成」を参照してください。
式に基づいたグループへの要素の追加。詳細は、第3.15.2項「グループ・レベルまたはグローバル・レベルの要素の式による追加」を参照してください。
データ・セットの編集。詳細は、第3.14.2項「データ・セットの編集」を参照してください。
グループからの要素の削除。詳細は、第3.14.3項「グループからの要素の削除」を参照してください。
グループのプロパティの編集。詳細は、第3.14.4項「グループのプロパティの編集」を参照してください。
グループ・レベルの「メニュー」ボタンを図3-28に示します。
基になるデータ・セットを編集するには:
「データ・セットの編集」をクリックして、データ・セット・エディタを開きます。
詳細は、第2章「データ・セットの作成」からデータ・セットのタイプに該当する項を参照してください。
グループから要素を削除するには:
要素の行で、メニューをクリックして、「要素の削除」をクリックします。例を図3-29に示します。
注意: 削除できる要素は、グループ関数(SumやCountなど)として追加した要素か、式として追加した要素のみです。 |
グループのプロパティを編集するには:
「メニュー」をクリックし、「プロパティ」を選択します。
「グループ名」を編集して、「OK」をクリックします(図3-30を参照)。
「グローバル・レベル関数」オブジェクトを使用すると、最上位のレポート・レベルでレポート・データ・セットに要素を追加できます。最上位レベル・データとして、次のタイプの要素を追加できます。
集計関数に基づく要素
式に基づく要素
PL/SQL文に基づく要素(Oracle Databaseデータソースの場合)
重要: 小数を返す計算要素と式にはデータ型に「整数」を選択すると、データが切り捨てられなくなります。 |
「グローバル・レベル関数」オブジェクトを、図3-31に示します。集計関数に基づく要素を追加するには、オブジェクトの「ここに集計関数をドロップ」領域に要素をドラッグします。式またはPL/SQLに基づく要素を追加するには、「メニュー」をクリックし、該当するアクションを選択します。
グローバル集計関数を追加するには:
データ・セットからデータ要素をドラッグして、「グローバル・レベル関数」オブジェクトの「ここに集計関数をドロップ」領域にドロップします。
たとえば、図3-32では、Salary要素に基づくグローバル・レベル集計関数を作成しています。
マウスのボタンを放すと、データ・モデル・エディタによって、集計要素にデフォルト名が割り当てられます。また、デフォルト関数として、「件数」が割り当てられます。使用可能な関数は、次のとおりです。
件数
平均
最初
最後
最大
最小
サマリー
関数を変更するには、新しい要素名の左側にある関数アイコンをクリックして、リストから関数を選択します。
図3-33では、新しいグローバル・レベルの要素CS_1の関数を「件数」から「平均」に変更しています。
デフォルトの名前を変更するには、要素名の右にあるアクション・アイコンをクリックしてから「プロパティ」をクリックして、「プロパティの編集」ダイアログを開きます。このダイアログで使用できるプロパティの詳細は、第3.12項「要素プロパティの設定」を参照してください。
グループ・レベルまたはグローバル・レベルの要素を式で追加するには:
グループ・レベル要素を追加する場合は、「グループ」オブジェクトの「メニュー」をクリックし、「式による要素の追加」を選択します。
グローバル・レベル要素を追加する場合は、「グローバル・レベル関数」オブジェクトの「メニュー」をクリックし、「式による要素の追加」を選択します(図3-34を参照)。
「式による要素の追加」ダイアログ内のフィールドに入力します(図3-35を参照)。
式を入力します。
送り矢印を使用して、式に必要なデータ要素を「使用可能」ボックスから「式」ボックスに移動します。
演算子をクリックして、その演算子を「式」ボックスに挿入するか、関数リストから選択します。
使用可能な関数の説明は、第3.17項「関数リファレンス」を参照してください。
「式の検証」をクリックして、検証します。
このPL/SQL関数は、VARCHARデータ型を返す必要があります。
PL/SQLでグローバル・レベル要素を追加するには:
「プロパティ」ページで、PL/SQLパッケージをデータ・モデルのプロパティの「Oracle DBデフォルト・パッケージ」として指定します。第1.7項「データ・モデルのプロパティの設定」を参照してください。
「グローバル・レベル関数」オブジェクトの「メニュー」をクリックし、「PL/SQLによる要素の追加」をクリックします。
「PL/SQLによる要素の追加」ダイアログで、フィールドに入力します(図3-36を参照)。フィールドの詳細は、表3-5を参照してください。
「使用可能」ボックスからPL/SQLパッケージを選択し、送りボタンをクリックしてその関数を「グループ・フィルタ」ボックスに移動します。
「構造」ビューを使用すると、データ・モデルの構造を表示確認できます。「データソース」列には、日付要素が階層ツリー形式で表示されます。この階層ツリーは、閉じたり開いたりできます。このビューを使用して、データ・モデル構造の正確さを検証します。「構造」ビューを図3-37に示します。
「構造」ページを使用して、データ・モデル内の要素に対して、ユーザーにとってわかりやすい名前を定義します。XML要素タグの名前(「XML表示」)と、レポート・レイアウト・ツールに表示される名前(「ビジネス名」)のどちらも変更できます。図3-38では、DEPARTMENT_ID要素の名前がDepartment Numberと表示されるように変更しています。
表3-6では、「式による要素の追加」ダイアログと「グループ・フィルタの編集」ダイアログでサポートされている使用可能な関数について説明しています。
表3-6 「式による要素の追加」ダイアログでサポートされる関数
関数 | 説明 | 構文 | 例 |
---|---|---|---|
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(expr1, expr2, expr3, ...) |
MAX(G1_Salary, 10000) salaryと10000のうち、大きい方が返されます。 |
|
セット内の要素の最小値を戻します。 |
MIN(expr1, expr2, expr3, ...) |
MIN(G1_Salary,5000) salaryと5000のうち、小さい方が返されます。 |
|
数値を、指定の小数点以下桁数で丸めた結果を返します。 |
ROUND(number[,integer]) integerが省略された場合は、numberの小数点以下が丸められます。 integerが負の場合は、整数部の桁が丸められます。 integerは整数でなければなりません。 |
ROUND(2.777) 3が返されます。 ROUND(2.777, 2) 2.78が返されます。 |
|
n以下の最小整数を返します。 |
FLOOR(n) |
FLOOR(2.777) 2が返されます。 |
|
n以上の最大整数を返します。 |
CEILING(n) |
CEILING(2.777) 3が返されます。 |
|
nの絶対値を返します。 |
ABS(n) |
ABS(-3) 3が返されます。 |
|
式の平均値を返します。 |
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関数は、入力文字セットの文字数によって長さを計算します。 charがNULLの場合、この関数はNULLを返します。 charが配列の場合、この関数は配列の長さを返します。 |
LENGTH(expr) |
配列の長さを返す例であるLENGTH{1, 2, 4, 4})は4を返します。 文字列の長さを返す例: LENGTH('countries')は9を返します。 |
|
式の値の合計を返します。 |
SUM(expr1, expr2, ...) |
SUM (G_1.SALARY, G_1.COMMISSION_PCT*G_1.SALARY) salaryとcommissionの合計が返されます。 たとえば、SALARY = 14000でCOMMISSION_PCT =.4の場合は、式を評価した結果は19,600.0となります。 |
|
問合せの結果の中のnull (空白として返される)を文字列で置き換えます。 |
NVL(expr1, expr2) expr1がNULLの場合、NVLはexpr2を返します。 expr1がNULLでない場合、NVLはexpr1を返します。 |
NVL(G_1.COMMISSION_PCT, .3)は、G_1.COMMISSION_PCTがnullのときに.3を返します。 |
|
char1とchar2を連結したものを返します。 |
CONCAT(char1, char2) |
CONCAT(CONCAT(First_Name, ' '), Last_Name) First_Name = JoeでLast_Name = Smithの場合は Joe Smithが返されます。 |
|
charを文字列データ型として返します。 |
STRING(expr) |
STRING(G1_SALARY) salary = 4400の場合は 4400が文字列として返されます。 |
|
文字列から部分文字列を取り出します。 |
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(string1, string2) string1は検索対象の文字列です。 string2は、string1内で検索する部分文字列です。 |
INSTR('this is a test', 'is a') 5が返されます。 |
|
有効な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が返されます。 |
|
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(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が返されます。 |