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

4.10. 計算式カラムの設定

リスト集計ではフィールドの値をそのまま表示するだけでなく、計算式や関数を利用できます。

「計算式を追加」ボタンをクリックすると、リスト集計にカラムが追加されます。
../../_images/apply_guide_10_1.png

4.10.1. 基本的な使い方


追加された計算式カラムには、以下の2つの入力必須項目があります。

キャプション カラムの列タイトルとして使用されます。
式: 計算式には他のカラムの「カラム名」を使用できます。 データ参照表示時には、該当するカラムのデータが展開されます。

実行結果

../../_images/apply_guide_10_2.png

計算式カラム「人口密度」には、「人口 / 面積」の計算結果が表示されています。


計算式カラムの計算結果を別の計算式カラムで使用することもできます。
../../_images/apply_guide_10_3.png

実行結果

../../_images/apply_guide_10_4.png

注意

計算式は上から順に実行されます。
下に追加した計算式カラムの結果を上のカラムで使用することはできません。
計算式カラムは式が実行できない場合(式に含まれている内容がグルーピングされているなど)、ブランクで表示されます。

計算式中で使用可能な関数が用意されています。

../../_images/apply_guide_10_5.png
AVG関数は引数で指定されたフィールドについて、全レコードの平均値を取得します。

コラム

“$”を先頭に付加されたフィールドは、該当レコードの値として展開するのではなく
そのフィールドを示す”フィールド名”と解釈されて実行されます。

実行結果

../../_images/apply_guide_10_6.png

4.10.2. データ型について

計算式の中で利用可能なデータ型は以下の通りです。
  • 文字列型
  • 数値型
  • 日付型
  • 真偽値型
  • 配列型
レコードから取得したデータの型は、クエリでのカラム定義に従って決定されます。
クエリで定義された型 計算式で利用した場合の型
文字列 文字列型
数値 数値型
日付 日付型
タイムスタンプ 日付型
真偽値 真偽値型
バイナリ
配列型

4.10.3. 式入力ダイアログの利用

式は手入力するだけでなく、利用可能な演算子、カラム名(フィールド名)、および関数を
一覧から選択しながら作成できます。

関数アイコンをクリックします。
../../_images/apply_guide_10_7.png

ポップアップダイアログには、式の入力エリアの下に利用可能な
演算子、カラム、関数の一覧が表示され、クリックすると式の最後に追加挿入できます。

../../_images/apply_guide_10_8.png
SUM関数をクリックしてみます。
../../_images/apply_guide_10_9.png
式入力エリアに関数が追加されます。

関数の引数の部分を有効なカラム名に書き換えます。
../../_images/apply_guide_10_10.png
入力した式の実行結果は「式の実行結果を確認する」ボタンで確認できます。
../../_images/apply_guide_10_11.png

注意

式の実行結果を確認するには、クエリからデータが取得できる状態である必要があります。

コラム

カラムの指定にはキャプションの代わりに内部的に生成されたコードを使用することもできます。
キャプションを利用した場合、そのキャプションが変更されると式が実行できなくなってしまいますが
コードを利用するとキャプションの変更に影響されることなく式の実行が可能です。
但し式の可読性が落ちるため、適宜使い分けてご利用ください。
ダイアログ下部の「OK」ボタンをクリックすると、ダイアログが閉じて
入力した式が設定されます。

../../_images/apply_guide_10_12.png

4.10.4. ヘッダとフッタの計算式設定


計算式はヘッダとフッタに埋め込むことも可能です。
../../_images/apply_guide_10_13.png
カラムの計算式と同様のダイアログが表示され、ダイアログを閉じると入力した計算式が設定されますが
以下の点が異なります。
  • ダイアログ上の式入力欄は常に空で初期化されます
  • 入力された式は [[ と ]] で括られた状態で設定されます
  • 常に追加挿入形式で設定されます
../../_images/apply_guide_10_14.png

実行時には、[[ と ]] で括られた内部のみが式として解釈されて実行されます。

例)
設定例 実行結果例
レコード総数:[[COUNT()]]件 レコード総数:110件

注意

ヘッダおよびフッタに設定する式の中では、レコード単位で取得するデータは使用できません。

4.10.5. リッチテキストと計算式

ヘッダとフッタでは計算式に対して文字装飾を適用できます。

  • 設定例
../../_images/apply_guide_10_15.png

  • 表示例
../../_images/apply_guide_10_16.png

注意

計算式に対して文字装飾を設定する場合は、計算式の中身だけでなく [[ と ]] も含めて纏めて同じ設定を適用してください。

※[[と]]の内部に文字装飾用のタグ文字列が混じると、演算ができない場合があります。

4.10.6. 利用可能な関数一覧

ARRAY (定数値...)

コラム

ARRAY関数は2014 Summer(Honoka)から利用可能です。
  • 戻り値の型 : 配列型
引数を要素に持つ新しい配列を生成します。引数に配列が指定された場合は、その配列が持つ全ての要素が新しい配列に追加されます。

例: ARRAY(“あ”, “い”, “う”) -> “あ”, “い”, “う” の3つの文字列要素を持つ配列データが生成されます。

AVG ($カラム名)

  • 戻り値の型:数値型
指定されたカラムの全レコードの平均値を返します。

COLUMNVALUES (評価式, $取得対象カラム, [最大取得データ数], [データ参照コード])

コラム

COLUMNVALUES関数は2014 Summer(Honoka)から利用可能です。

注意

COLUMNVALUES関数はRDBのデータソースのみ使用可能です。
  • 戻り値の型:配列型
データ参照から評価式に合致するレコードの取得対象カラムを配列で取得します。
データ参照コードが省略された場合はカレントのデータ参照から取得します。
※COLUMNVALUES関数はデータ参照のグループ化を解除して実行されるため、重複したデータが出力されることがあります。

例)COLUMNVALUES($面積 > 10000, $都道府県名, 5, “xxxxxxxxxx”) -> “北海道”, “岩手”, “福島”, “長野”, “新潟”
例)COLUMNVALUES($地域名 == “関東” && $人口 > 500, $都道府県名) -> “東京”, “神奈川”, “埼玉”,”千葉”

CONCATENATE (定数値...)

  • 戻り値の型:文字列型
引数で指定された値を文字列連結します。

例)CONCATENATE(‘a’, ‘b’, ‘c’) -> abc

COUNT ()

  • 戻り値の型:数値型
レコード総数を返します。

COUNTIF (評価式)

※この関数はRDBのデータソースのみ使用可能です

  • 戻り値の型:数値型
評価式に合致するレコード数を返します。

例) COUNTIF($地域名 == “関東”) -> 7

DATE (ミリ秒を表す数値orフォーマットパターン文字列, フォーマットパターン形式の文字列)

  • 戻り値の型:日付型
日付型データを生成します ミリ秒を表す数値または、パターン文字列と文字列形式の日付データを引数として受け取ります。

例) DATE (1427846400000) -> 2015年04月01日 を表す日付型データ
例) DATE (“yyyy/MM/dd”, “2015/12/01”) -> 2015年12月01日 を表す日付型データ

DATETIMEDURATIONFORMAT (パターン文字列, ミリ秒の時間データ)

  • 戻り値の型:文字列型
時間データ(ミリ秒)をパターン文字列の形式でフォーマットします。
パターン文字列に使用可能な特殊文字は d(日) H(時間) m(分) s(秒) S(ミリ秒)の5つです。

例)DATETIMEDURATIONFORMAT(‘d日’, 172800000) -> 2日

EVAL (評価式)

  • 戻り値の型:真偽値型
評価式の結果をTRUE/FALSEで返します。

FORMAT (フォーマット文字列, 数値または日付データ, [数値データを日付データのミリ秒として扱うかどうか true/false], [ロケールを表す文字列])

  • 戻り値の型:文字列型
数値または日付データを指定されたフォーマットで文字列に変換します。
ロケールを表す文字列は、言語コード、国コード、拡張情報をアンダースコアで連結した文字列を指定します。
この設定は、javaのAPI(java.util.Localeクラスのコンストラクタ)を通して変換処理に適用されます。
具体的には、”ja_JP_JP”を設定することで和暦形式の表示が可能です。
※この変換処理の動作仕様はjavaの実装に依存します。

例)FORMAT(‘yyyy/MM/dd’, $RECORD_DATE) -> 2013/07/01
例)FORMAT(‘#,###’, 123456789) -> 123,456,789
例)FORMAT(‘yyyy/MM/dd’, 1369000000000, true) -> 2013/05/20
例)FORMAT(‘GGGGyyyy年’, 1369000000000, true, “ja”) -> 西暦2013年
例)FORMAT(‘GGGGyyyy年’, 1369000000000, true) -> 西暦2013年
例)FORMAT(‘GGGGyyyy年’, 1369000000000, true, “ja_JP_JP”) -> 平成25年

コラム

[ロケールを表す文字列]の設定は2014 Spring(Granada)から利用可能です。

IF (評価式, 戻り値1, 戻り値2)

  • 戻り値の型:引数として渡された、戻り値1または戻り値2のデータ型
評価式がTRUEの場合は戻り値1、それ以外の場合は戻り値2を返します。

例)IF($都道府県名 == “東京”, 1, 2)
都道府県名が東京である場合は1、それ以外の場合は2が返却されます。

LEN (文字列型の定数値)

  • 戻り値の型:数値型
指定された値の文字列長を返します。

LOOKUP (評価式, $取得対象カラム名, [データ参照コード])

※この関数はRDBのデータソースのみ使用可能です。

  • 戻り値の型:取得対象カラムのデータ型
データ参照から評価式に合致するレコードの取得対象カラムを取得します。
データ参照コードが省略された場合はカレントのデータ参照から取得します。

例)LOOKUP($面積 > 10000, $都道府県名, “xxxxxxxxxx”) -> 北海道

MAX ($カラム名)

  • 戻り値の型:数値型
指定されたカラムの全レコード中の最大値を返します。

MIN ($カラム名)

  • 戻り値の型:数値型
指定されたカラムの全レコード中の最小値を返します。

NUM (定数値)

  • 戻り値の型:数値型
指定された値を数値型に変換します。
日付型データが指定された場合はミリ秒データを取得します。

例: NUM(“123”)
実行結果例:123
例: NUM(TODAY())
実行結果例:1427400399551

ROWNUMBER ()

コラム

ROWNUMBER関数は2019 Winter(Xanadu)から利用可能です。

注意

ROWNUMBER関数をカラム一覧に複数設定したり、ヘッダおよびフッタに設定した場合は正しい行番号を表示できません。
  • 戻り値の型:数値型
行番号表示用の数値を返します。
前ページまでのレコード数を初期値として呼び出されるたびに1ずつ加算されます。

STR (定数値)

  • 戻り値の型:文字列型
指定された値を文字列に変換します。

SECUREPARAMETER (キー名, 値)

コラム

SECUREPARAMETER関数は2015 Spring(Juno)から利用可能です。
  • 戻り値の型:文字列型
<imart type=”secureParameter”>タグで生成可能な暗号化されたデータを生成します。
キー名: secureParameterタグのname属性に相当するデータ
値: secureParameterタグのvalue属性に相当するデータ

SUBSTITUTE (文字列, 検索文字列, 置換文字列)

  • 戻り値の型:文字列型
第1引数で指定された文字列の中から検索文字列で指定された値を置換文字列で置換した結果を返します。
検索文字列には正規表現が使用できます。

例)SUBSTITUTE(” abc ”, “s”, “”) -> “abc”
例)SUBSTITUTE(“abc123”, “[a-z]”, “0”) -> “000123”

SUBSTRING (対象文字列, 開始インデックス番号, [終了インデックス番号])

  • 戻り値の型:文字列型
部分文字列を取得します。
終了インデックス番号が省略された場合は対象文字列の長さが設定されます。

SUBTRACT (引数1, 引数2)

  • 戻り値の型:数値型
引数1から引数2を差し引いた数値データを取得します。
日付型データが渡された場合はミリ秒の数値として扱われます。

SUM ($カラム名) または SUM(定数値...)

  • 戻り値の型:数値型
指定されたカラムの全レコードの合計を返します。
定数値が渡された場合は、それらの合計を返します。
例:SUM ($人口)
実行結果例: 829984
例:SUM (1, 2, 3) -> 6

SUMIF (評価式, $合計値を計算するカラム名)

※この関数はRDBのデータソースのみ使用可能です。

  • 戻り値の型:数値型
評価式に合致するレコードのみの合計値を取得します。

例: SUMIF (面積 > 7000, $人口)
実行結果例: 248003

SWITCH (判定対象値, 定数値1, 返却値1, [定数値2], [返却値2] ... [デフォルト値])

コラム

SWITCH関数は2014 Summer(Honoka)から利用可能です。
  • 戻り値の型:引数として渡された、返却値、デフォルト値のデータ型
判定対象値を定数値と比較して、一致した場合に対応する返却値を返します。
例:SWITCH (都道府県名, “東京”, 1, “神奈川”, 2, “埼玉”, 3, 4)
都道府県名 が 東京 である場合は、1 神奈川である場合は、2 埼玉である場合は、3、それ以外の場合は、4が返却されます。

SWITCHMULTI (判定対象値, 定数値1, 返却値1, [定数値2], [返却値2] ... [デフォルト値])

コラム

SWITCHMULTI関数は2022 Spring(Eustoma)から利用可能です。
  • 戻り値の型:引数として渡された、返却値、デフォルト値のデータ型
判定対象値が文字列の場合
カンマで連結された判定対象値を分割した値を定数値と比較して、一致した場合に対応する返却値をカンマで連結して返します。
例: SWITCHMULTI (都道府県コード, “1”, “東京”, “2”, “神奈川”, “3”, “埼玉”, “その他”)
都道府県コード が 1,3,4 である場合は、東京,埼玉,その他 が返却されます。
判定対象値が文字列以外の場合
SWITCH関数が実行され結果が返却されます。

TIMEZONE ([取得対象], [取得情報])

コラム

TIMEZONE関数は2020 Summer(Zephirine)から利用可能です。
  • 戻り値の型:引数で指定されたタイムゾーン情報
引数で指定されたタイムゾーン情報を返します
第1引数には、取得する対象を指定します。以下のいずれかのみ指定可能です。引数を省略した場合は”CSV”として扱われます。
“CSV”:CSV出力のタイムゾーン
“DSP”:画面表示のタイムゾーン
第二引数には、取得する情報を指定します。以下のいずれかのみ指定可能です。引数を省略した場合は”GMT”として扱われます。
“GMT” :GMT時差(”GMT” + 時差(+-HH:mm))
“ID” :タイムゾーンID

TODAY ([タイムゾーンを表す文字列])

  • 戻り値の型:日付型
カレントユーザに基づくシステム日付を取得します ※引数にタイムゾーンを表す文字列を指定することも可能です。

VCSYSTEMPARAMETER (動的パラメータを表すタグ文字列)

コラム

VCSYSTEMPARAMETER関数は2014 Summer(Honoka)から利用可能です。
  • 戻り値の型:文字列型
動的パラメータを表すタグ文字列を解析して結果データを文字列で取得します。
例: VCSYSTEMPARAMETER(“<%USER_ID%>”)
実行結果例: aoyagi
例: VCSYSTEMPARAMETER(“<%LOCALE%>”)
実行結果例: ja
例: VCSYSTEMPARAMETER(“<%ENCODING%>”)
実行結果例: UTF-8

その他の引数に指定可能なタグ文字列については、「動的パラメータ」を参照してください。

コラム

評価式とは、式全体でtrueまたはfalseと判定される計算式のことです。
例) $SORT_KEY > 10

4.10.7. ユーザ定義関数

関数は独自に定義して作成できます。
※新しい関数の作成にはJavaコードの記述が必要です。

新しい関数1つに対してJavaクラスを1つ作成します。
関数として登録するクラスは次のインタフェースを実装します
  • jp.co.intra_mart.foundation.viewcreator.formula.FunctionImplementation

このインタフェースには3つのメソッドが定義されています。

  • void init(ViewCreatorData data);
ViewCreatorの設定データが渡されてきます。
ViewCreatorDataの中には、クエリの設定、データ参照の設定、データ参照表示時にユーザが入力した検索条件やソート列の情報が含まれます。

  • String getName()
関数名を取得します。
※他の関数と名称が重複しないように注意してください。

  • FixedValue execute(Arguments args) throws FunctionExecuteException;
関数が実行されたとき呼び出されます。
渡された引数に対して戻り値を返します。
実行エラーが発生した場合は例外をスローします。


コラム

引数や戻り値として使用可能な型については
jp.co.intra_mart.foundation.viewcreator.model.formulaパッケージ内のクラスを参照してください

  • 関数の登録

    作成したクラスの情報を下記の設定ファイルに登録します。

    %コンテキストパス%/WEB-INF/conf/viewcreator-function-config.xml
    <function-config>
       <class-name>%作成したクラス名%</class-name>
    </function-config>
    

    設定を反映するにはサーバの再起動が必要です。
  • 入力ダイアログ上で引数や内容の説明を記載する

メッセージプロパティファイルに以下のキーを使用して文章を作成してください

引数の説明:MSG.I.IWP.VIEWCREATOR.DATAVIEWEDIT.FUNCTIONS.%関数名%.ARGUMENT
内容の説明:MSG.I.IWP.VIEWCREATOR.DATAVIEWEDIT.FUNCTIONS.%関数名%.DESCRIPTION