アプリケーションのデータベースに対する再利用可能なクエリを定義します。
データを分析して意思決定を下すために、データベースに対するクエリの作成が必要になることがよくあります。
データを分析するには、たとえば、1 つまたは複数の基準に従ってデータをグループ化して計算し、最終的な結果を次にあげるような形で確認する必要があります:
- 行および列が固定されている静的なテーブル
- 列を移動させたりデータをグループ化したりすることができる動的なテーブル
- グラフ
Query オブジェクトを使うと、こうしたクエリを単純かつ直観的な方法で作成することができます。これによって、データベースから取得する情報の価値を高めることができます。
Query オブジェクトの作成および説明
Query オブジェクトは [ 新規オブジェクト ] ダイアログから作成できます ( [ レポーティング ] カテゴリにあります)。
Query オブジェクトは 4 つのエレメントで構成されます:
1) [ Structure ]
2) [ SQL statement ]
3) [ Preview ]
4) [ Documentation ]
これらのエレメントはクエリ名の下に表示されます。
Query オブジェクトを使用するときに最も重要な課題は、クエリを定義することです。Query オブジェクト 1 つあたり、データベースのクエリを 1 つ定義します。GeneXus には、この定義を簡単に行えるインターフェースが用意されています。
クエリは、Query オブジェクトの [ Structure ] エレメントで定義します。この画面には、次の 4 つのノードがあります:
- Attributes: クエリ結果で返される項目属性です。
- Parameters: 結果をフィルタリングするためにクエリがパラメーターを受け取る場合は、このエレメントで宣言します。
- Filters: クエリの結果に適用されるフィルタです。
- OrderBy: 既定のクエリの順序を宣言します。ピボットテーブルで出力する場合、このオプションは考慮されません。
クエリ構造に適切なデータが入力されると、オブジェクトは次の画像のように表示されます。
クエリで使用する項目属性は、次に示すシンプルなリストから選択します。クエリに項目属性を追加するには、 [ 項目属性リスト ] ツールボックスから目的の項目属性をドラッグするか、クエリの構造に項目属性名を直接入力します。入力するにつれて候補が表示されるようになっており、項目属性をより早く簡単に選択できるようになっています。
[ デスクリプション ] 列のテキストが、クエリで出力される項目属性のラベルになります。クエリを定義するときに、ここに表示される値を確認することをお勧めします。コンテキストメニューを使うと、 [ 項目属性 ] の下に表示される項目属性の順序を変更することができます。コンテキストメニューには、ほかのオプションも表示されます。
さらに、項目属性の次の設定も行えます:
- 集計関数: Count、Sum、および Average、Min、および Max を使用できます (*)。Sum(Count(ProductName)) のように、集計関数をネストすることもできます。関数を指定するには、行に直接入力するか、集計する項目属性を右クリックしてコンテキストメニューを使用します。
集計関数を適用する前に、いくつかの項目属性でグループ化することもできます。この機能により、すべてのデータベーステーブルを作成することなく、ユーザーがさまざまな方法でデータを参照することができます。
たとえば、項目属性 YearId、MonthId、および DayId を持つ Year テーブル (テーブルは 365 個のレコードを持つ) があり、月別のクエリを作成したいとします。これを実現するには、集計を使用します: Sum(YearId) by (MonthId) を使用すると、365 個ではなく、12 個のデータが表示されます。この集計の構文は次のとおりです:
<集計関数>(<項目属性名>) by(<項目属性名1>, <項目属性名2>, ..,<項目属性名n>)
* すべてのタイプの項目属性で必ずしもすべての集計関数を使えるわけではありません。Sum、Average、Max、および Min は、Numeric タイプの項目属性でしか使用できません。また、小数点のある Numeric の項目属性をクエリの構造にドラッグ アンド ドロップすると、Sum 関数が自動的に適用されます。
- パーセンテージ: 項目属性の値をパーセントとして表示されるようにします。集計関数を指定した項目属性項目だけで設定できます。この設定を行うには、コンテキストメニューの [ パーセンテージで表示 ] オプションを選択します。
- フィルタ: 集計項目属性用のフィルタ (集計項目属性を使用する場合)。項目属性に複数の種類のフィルタを定義できます。オプションは 1 つのフィルタを定義する場合と同じです。詳しくは、下の「フィルタ」を参照してください。
- 式
( [ プロパティ ] セクションに表示される) プロパティは選択した項目属性のタイプによって異なります。
例: [ ShowAllValues ] プロパティは、集計関数が適用されていない項目属性でのみ使用可能であり、 [ Percentage ] プロパティと [ Calculation Group ] プロパティは、集計関数が適用された項目属性でのみ使用可能です。
集計関数が適用された項目属性 |
集計関数が適用されていない項目属性 |
|
|
クエリパラメーターを定義して、次のプロパティを設定します。
- Name: パラメーターの名前。このプロパティの値は、Query Viewer コントロールで実行時にクエリのパラメーターの値を設定するときに使用されます。
- Description: パラメーターの説明。
- Based On: パラメーターのタイプが、項目属性とドメインのどちらに基づくかを定義します。
- Data type: パラメーターのタイプ。ここで設定したタイプによって、設定できるほかのプロパティ (Length、Decimals、Signed、Date format、Hour format など) が異なります。
- Is Collection: パラメーターが、コレクションタイプのものかどうかを定義します。値が [ True ] である場合、コレクションの値を決定するために、別のプロパティが表示されます (コレクション値)。詳細情報: Query オブジェクト: パラメーター。
- Value: パラメーターの既定値。既定値は実行時に設定しますが、実行時に設定されない場合は、ここで指定した既定値が使われます。
クエリのフィルタを指定します。フィルタの詳しい説明と構文 (図式付き) を見るには、ここをクリックしてください: Query オブジェクト: フィルタ
フィルタは、要素を論理演算子 (AND と OR) で結んで定義します。次の種類のフィルタがあります:
- リストフィルタ: フィルタリングされる項目属性の値をリストします。次に構文を示します:
<項目属性名> in [ <値>, <値>, ..., <値> ]
- 範囲フィルタ: 値の範囲 (複数) を論理演算子 (AND と OR) で結びます。範囲の指定には、関係演算子 (<、>、>=、<=、=)、定数、パラメーターを使用できます。たとえば、この種類のフィルタも、多くの種類の構文を受け入れます:
<項目属性名> in [ <値> to <値> ] or <項目属性名>+"-"+<項目属性名> in [ <値> to <値> ]
- ほかの項目属性基準のフィルタ: ほかの項目属性の値を使ってフィルタリングします。
- ほかのフィルタグループ: フィルタの定義をクエリの構造のさまざまなレベルに挿入することができます。
[ SQL statement ] エレメントには、データベースからデータを取得するために使用する SQL 文が表示されます。
このオプションは Query オブジェクトの出力に関するすべてのプロパティを簡単に変更し、すべての効果をすぐに確認することができます。QueryViewer コントロールは、既定の値として関連する Query オブジェクトからすべてのプロパティを取得します。
定義しているクエリをプレビューするには、4 とおりの方法があります。
- Table
- PivotTable
- Chart
- Card
このプレビュータブは、Web パネルで QueryViewer コントロールを使用したときに表示されるものと同じです。
Query オブジェクトと Query Viewer コントロールの使用例は、次を参照してください: Query オブジェクトの使用例
|