intra-mart Accel Platform ViewCreator 管理者操作ガイド 第32版 2024-04-01

4.1. 抽出条件の設定

「クエリ編集」画面、およびリスト集計の「データ参照編集」画面では、レコードの抽出条件を設定できます。

リスト集計の「検索設定」は、データ参照を閲覧するユーザが目的の情報に素早く辿り着くための機能ですが
それに対して「抽出条件」は、ユーザに見せたくない情報を設定者側であらかじめ絞っておくための機能です。

4.1.1. クエリ作成時に抽出条件を設定する

「クエリ編集」画面の「抽出条件一覧」タブからレコードの抽出条件を設定します。
../../_images/apply_guide_1_1.png
図:クエリ編集画面 - 抽出条件

項目名 説明
WHERE句直接入力
抽出条件を設定する代わりに適用するWHERE句を入力します。
動的パラメータを埋め込むことも可能です。
OR検索
複数の抽出条件が設定された場合に OR 条件でデータ抽出を行います。
チェックが外されている場合は AND 条件が適用されます。
上へ下へ 抽出条件の順序を入れ替えます。
テーブル/ビュー/リソース デザイナに追加されているエンティティを選択可能です。
カラム/フィールド
抽出条件の対象とするカラムを選択します。
「テーブル/ビュー/リソース」で選択されたエンティティが持つカラムを選択可能です。
抽出方法 部分一致、範囲指定などの抽出方法を指定します。
条件値 固定の条件値だけでなく、カレントのユーザコードなどの動的に変化する値を指定することも可能です。
削除 抽出条件一覧からカラムを削除します。

4.1.1.1. 抽出条件を直接入力する

複雑な条件式を設定したい場合は抽出方法を「直接入力」にします。
直接入力が選択されると、算術演算子の挿入が行われないため演算子を適宜入力してください。

../../_images/apply_guide_1_4.png
図:クエリ編集画面 - 直接入力

WHERE句直接入力にチェックを入れることで、WHERE句そのものを直接記述することも可能です。
../../_images/apply_guide_1_5.png
図:クエリ編集画面 - WHERE句直接入力

注意

直接入力を使用する場合は、テーブルやレコードを壊すことの無いように細心の注意を払ってください。

4.1.2. データ参照作成時に抽出条件を設定する

リスト集計のデータ参照作成時に、「データ参照編集」画面からレコードの抽出条件を設定します。
クロス集計とグラフ集計では設定できません。
../../_images/apply_guide_1_2.png
図:データ参照作成画面 - 抽出条件

項目名 説明
追加 抽出条件を追加します。
「削除」アイコン 抽出条件一覧からカラムを削除します。
「上へ下へ」アイコン 抽出条件の順序を入れ替えます。
集合関数
抽出パターンを指定します。
リスト集計で設定可能なのは「1レコード単位」のみです。
対象カラム
抽出条件の対象とするカラムを選択します。
選択可能なカラムが表示されます。
抽出方法 部分一致、範囲指定などの抽出方法を指定します。
条件値 固定の条件値だけでなく、カレントのユーザコードなどの動的に変化する値を指定することも可能です。

コラム

「1レコード単位」以外の抽出パターンは、サマリ集計を選択している場合のみ設定可能です。

SQL上では、下記のように適用されます。
1レコード単位 : WHERE句
集合関数 : HAVING句

注意

リスト集計の「抽出条件」では、OR検索は設定できません。

4.1.3. データ参照時のSQL

データ参照が閲覧されたときに発行されるSQLは次のような構造です。
SELECT

   [データ参照編集画面で表示されているカラム一覧]

FROM

   ( SELECT

       [クエリに追加されたカラム一覧]

     FROM

       [クエリに追加されたテーブル]

     WHERE

       [クエリで設定された抽出条件]

   ) IM__QUERY__

WHERE

   [データ参照で設定された抽出条件]

データベースの実装に依存しますが、一般的にはクエリの段階でデータを絞っておいた方がSQLの実行速度は良くなる傾向にあります。
ただし、1つのクエリを共有して複数のデータ参照を作成し、抽出条件はデータ参照ごとに設定した方が良いケースもあるので、適宜使い分けて設定してください。

4.1.4. 動的パラメータ

抽出条件の値には固定値だけでなく動的に変化する値などの特別な値をセットすることも可能です。

../../_images/apply_guide_1_3.png
図:クエリ編集画面 - 抽出条件

../../_images/apply_guide_1_3_1.png
図:データ参照編集画面 - 抽出条件

パラメータ名 生成される値
<%DYNAMIC_PARAMETER%>

API経由でパラメータ値をセットする場合に使用します。

このパラメータが設定された抽出条件が1つでも存在するクエリからは、データ参照を作成できません。

詳しくは、jp.co.intra_mart.foundation.viewcreator.model.Query#executeを参照してください。

<%ENCODING%> SQL実行時のログインユーザに関連づけられたエンコーディング文字列がセットされます。
<%LOCALE%> SQL実行時のログインユーザに関連づけられたロケール文字列がセットされます。
<%NOT_NULL%>

IS NOT NULL がセットされます。

※このパラメータを選択した場合は、必ず「抽出方法」で「完全一致」を選択してください。

<%NULL%>

IS NULL がセットされます。

※このパラメータを選択した場合は、必ず「抽出方法」で「完全一致」を選択してください。

<%SYSTEM_DATE(*)%>

SQL実行時のシステム日付がセットされます。

システム日付データを指定されたフォーマットに従った、文字列がセットされます。

文字列で生成された日付データは、データベースごとに用意された型変換関数に渡されます。

※このパラメータは、必ず日付型またはタイムスタンプ型のカラムに対してセットしてください。

<%USER_ID%> SQL実行時のログインユーザコードがセットされます。
<%REQUEST_PARAMETER(KEY_NAME)%>
HttpServletRequest(リクエスト)、または、RenderRequest(ポートレットのリクエスト)から取得した値がセットされます。
取得される優先順位は、HttpServletRequestが優先されて取得されます。

「KEY_NAME」にはパラメータ名を指定します。

コラム

<%REQUEST_PARAMETER(KEY_NAME)%>は2014 Spring(Granada)から利用可能です。
2016 Spring(Maxima)から、<%REQUEST_PARAMETER(KEY_NAME)%>でRenderRequest(ポートレットのリクエスト)が取得可能になりました。

コラム

  • <%REQUEST_PARAMETER(KEY_NAME)%>の使用例
  1. 検索設定の場合


    タグが受け取る引数として、リクエストパラメータのキー名を任意に指定します。
    ../../_images/apply_guide_1_6_1.png

    データ参照を表示した際に指定したリクエストパラメータを受け取ることができます。
    ../../_images/apply_guide_1_6_2.png
  2. 抽出条件の場合


    タグが受け取る引数として、リクエストパラメータのキー名を任意に指定します。
    ../../_images/apply_guide_1_6_3.png

    データ参照を表示した際に指定したリクエストパラメータを受け取ることができます。
    ../../_images/apply_guide_1_6_4.png
  3. ポートレットで利用する場合

    メニューから「サイトマップ」→「ポータル - ポートレット一覧」を選択します。
    編集アイコンをクリックし、「ポートレット編集」画面を開きます。
    基本設定のページ引数に抽出条件で設定したタグのキー名を指定します。
    ../../_images/apply_guide_1_6_5.png

    「ポートレット編集」画面のページ引数で指定したリクエストパラメータを受け取ることができます。
    ../../_images/apply_guide_1_6_6.png

コラム

  • <%SYSTEM_DATE%>で、1時間前、前日などの指定をする
パラメータ<%SYSTEM_DATE(yyyy/MM/dd HH:mm)%>は、実行時のシステム日付がセットされますが
フォーマット文字列部分に、+演算子や-演算子を用いた記述が可能です。

  • システム日付の1時間前をセットしたい場合

<%SYSTEM_DATE(yyyy/MM/dd HH-1:mm)%>

  • システム日付の前日をセットしたい場合

<%SYSTEM_DATE(yyyy/MM/dd-1 HH:mm)%>

※演算子には、+と-のみ使用できます。

※演算子の前後にスペースは入れないようにしてください。

コラム

下記のファイルを編集することでオリジナルの動的パラメータを作成することもできます

WEB-INF/conf/viewcreator-config.xml

例) LOCALEパラメータの設定と実装例
<param>
  <param-name>LOCALE</param-name>
  <class-name>jp.co.intra_mart.foundation.viewcreator.params.SystemParameterLocale</class-name>
</param>

パラメータ名(<param-name>タグの値)には半角大文字の英字とアンダースコアのみを使用します。

<class-name>の値にはjp.co.intra_mart.foundation.viewcreator.SystemParameterインタフェースの実装クラスを指定します。

public class SystemParameterLocale implements SystemParameter {

   @Override
   public String get(final String syskey) {
      final AccountContext context = Contexts.get(AccountContext.class);
      return context.getLocale().toString();
   }
}

上記変更を反映するにはサーバの再起動が必要です。

4.1.4.1. 動的パラメータを利用可能な個所

動的パラメータは「抽出条件」や「検索設定」の他にも、SQLを記述する設定項目において利用可能な場合があります。
詳細は以下の通りです。
定義の種類 画面・設定項目 データの扱い
クエリ クエリビルダ 抽出条件(抽出方法が直接入力のとき) そのまま利用
抽出条件(抽出方法が直接入力以外のとき) 自動変換
WHERE句直接入力 そのまま利用
Viewの作成 利用不可
SQLビルダ SQL そのまま利用
データ参照 抽出条件 自動変換
検索設定 自動変換
「データの扱い」が「そのまま利用」の場合は、動的パラメータから取得したデータを加工無しでSQL文の一部として利用するため、そのことを考慮した記述にする必要があります。
たとえば、動的パラメータで取得した値を文字列として利用する場合は、シングルクォートで囲む必要があります。
「自動変換」の場合は、データ型に応じたSQL文に変換してから利用するため、そのような考慮は不要です。

コラム

使用例

以下は「SQLビルダによるクエリの作成」の「SQL」で利用する場合の記述例です。
imm_user テーブルからレコードを取得するときの条件として user_cd に指定する値を <%REQUEST_PARAMETER(KEY_NAME)%> から取得します。
このとき、<%REQUEST_PARAMETER(KEY_NAME)%> 全体をシングルクォーテーションで囲っています。
SELECT
  *
FROM
  imm_user
WHERE
  user_cd = '<%REQUEST_PARAMETER(userCd)%>'

コラム

<%REQUEST_PARAMETER(KEY_NAME)%> で受け取ったデータの中に ‘ (シングルクォーテーション)が含まれている場合、’’ (シングルクォーテーションを2つ連続して記述)に変換されます。