関数リファレンス > 関数 > 関数の概要
  

関数の概要

集計関数はマッピングタスクで使用できます。マッピングタスクと同期タスクでは、他のすべての関数を使用できます。
トランスフォーメーション言語には次の関数カテゴリが用意されています。

Aggregate関数

集計関数は、選択した複数のフィールドの非NULL値を要約した値を返します。
集計関数を使用すると、次のタスクを実行できます。
マッピングタスクのみで集計関数を使用する。
トランスフォーメーション言語には、以下の集計関数が用意されています。
集計関数は、アグリゲータオブジェクトでのみ使用できます。他の集計関数の中にネストできる集計関数は1つだけです。データ統合は、最も内側の集計関数式を評価し、その結果を外側の集計関数式の評価に使用します。詳細モードでは集計関数をネストできません。
例えば、次のように、IDでグループ分けして、2つの集計関数をネストしたアグリゲータオブジェクトを設定することができます。
SUM( AVG( earnings ) )
このとき、データセットには以下の値が格納されています:
ID
EARNINGS
1
32
1
45
1
100
2
65
2
75
2
76
3
21
3
45
3
99
戻り値は186です。データ統合は、IDでグループ分けを行い、AVG式を評価して3つの値を返します。次に、その値をSUM関数で追加して結果を出します。

フィルタ条件

フィルタ条件を使用して、検索によって返される行を制限します。
フィルタは、検索によって返される行を制限します。すべての集計関数および、MOVINGAVG、MOVINGSUMの関数に、フィルタ条件を適用できます。フィルタ条件の値はTRUE、FALSE、またはNULLでなければなりません。フィルタ条件の値がNULLまたはFALSEである場合、データ統合はその行を選択しません。
有効なトランスフォーメーション式を必要に応じて入力できます。たとえば、次の式は給与が$50,000を超える従業員すべてに対して、給与のメジアンを計算します。
MEDIAN( SALARY, SALARY > 50000 )
他の数値をフィルタ条件として使用することもできます。例えば、MEDIAN関数の完全な構文として、次のように入力することができます。これには、数値フィールドが含まれています。
MEDIAN( PRICE, QUANTITY > 0 )
いずれの場合も、データ統合はフィルタ条件に対して小数値を整数に丸めます(例えば、1.5は2、1.2は1、0.35は0になります)。値が0に丸められた場合、フィルタ条件はFALSEを返します。値を丸めたくない場合には、TRUNC関数で値を切り捨てて整数にします。
MEDIAN( PRICE, TRUNC( QUANTITY ) > 0 )
フィルタ条件を省略すると、関数はフィールド内のすべての行を選択します。

変換関数

トランスフォーメーション言語には、以下の変換関数が用意されています。

データクレンジング関数

トランスフォーメーション言語には、データエラーをなくすための関数群があります。データクレンジング関数を使用して、以下のタスクを完了できます。
トランスフォーメーション言語には、以下のデータクレンジング関数が用意されています。

日付関数

トランスフォーメーション言語にはいくつかの日付関数が用意され、日付を丸めたり、切り捨てたり、比較したり、日付の一部を抽出したり、日付に算術演算を行ったりできます。
どの日付関数にも、日付データ型を持つ任意の値を渡すことができます。ただし、日付関数に文字列を渡したい場合は、まずTO_DATE関数を使って文字列をトランスフォーメーションのDate/Timeデータ型に変換する必要があります。
トランスフォーメーション言語には、以下の日付関数が用意されています。
一部の日付関数にはformat引数が含まれています。この引数には、トランスフォーメーション言語のフォーマット文字列のいずれかを指定します。日付フォーマット文字列は国際化されていません。
トランスフォーメーションのDate/Timeデータ型では、ミリ秒をサポートしていません。したがって、ミリ秒を含む日付を渡した場合、データ統合では、日付のミリ秒部分が切り詰められます。

エンコード関数

トランスフォーメーション言語には、データのエンコード、暗号化、圧縮、およびチェックサムのための以下の関数が用意されています。

財務関数

トランスフォーメーション言語には、以下の財務関数が用意されています。

水平拡張関数

水平拡張関数を使用して、水平マクロ式を作成します。
水平拡張関数には、%OPR_<function_type>%の命名規則を使用します。
水平拡張関数では、丸カッコではなく角かっこ([ ])を使用します。
トランスフォーメーション言語には、次の水平拡張関数が用意されています。

数値関数

トランスフォーメーション言語には、以下の数値関数が用意されています。

科学関数

トランスフォーメーション言語には、次の科学関数が用意されています。

特殊関数

トランスフォーメーション言語には、次の特殊関数が用意されています。
特殊関数の中に他の関数をネストすることもできます。

文字列関数

トランスフォーメーション言語には、次の文字列関数が用意されています。
文字データを評価するため、文字列関数LOWER、UPPER、およびINITCAPでは、そのタスクを実行するSecure Agentのコードページを使用します。

テスト関数

トランスフォーメーション言語には、次のテスト関数が用意されています。

ウィンドウ関数

詳細モードでは、現在の行に関連した一連の行で計算を実行するウィンドウ関数のグループがトランスフォーメーション言語に含まれます。この関数は、入力行ごとに1つの戻り値を計算します。
トランスフォーメーション言語は、以下のウィンドウ関数を生成します。
ウィンドウプロパティを設定すると、式トランスフォーメーションでウィンドウ関数を使用できるようになります。ウィンドウプロパティを設定した場合、集計関数をウィンドウ関数として使用することもできます。集計関数は、ウィンドウ関数として単一の出力行に行をグループ化することはありませんが、個々の行ごとに出力値を返します。

ウィンドウ関数としての集計関数

LEADとLAGに加えて、ウィンドウ関数として集計関数を使用することもできます。SUMやAVGなどの集計関数をウィンドウ関数として使用すると、計算を実行できます。ウィンドウ関数には、特定の終了オフセットを設定できるため、ステートフル関数よりも柔軟です。
集計関数をウィンドウ関数として使用するには、ウィンドウプロパティでフレームを定義して、計算範囲を制限する必要があります。集計関数は、フレームを超えて計算を実行し、各行に1つの値を生成します。

あなたは過去2年間、さまざまな数量の木材を販売してきた材木営業担当者であるとします。販売数量の現在までの累計を計算します。
次の表に、各販売ID、日付、販売数量の一覧を示します。
Sale_ID
Date
Quantity
30001
2016-08-02
10
10001
2016-12-24
10
10005
2016-12-24
30
40001
2017-01-09
40
10006
2017-01-18
10
20001
2017-02-12
20
SUM関数によって、すべての値が合計され、1つの出力値が返されます。各行の累計を得るため、関数の境界に対してフレームを定義できます。
[ウィンドウ]タブで、次のプロパティを設定します。
次の集計関数を定義します。
SUM (Quantity)
SUMは、現在の行の数量を、現在の行の前のすべての行の数量に加算します。この関数は、各行の累計を返します。
次の表に、各日付の累計を示します。
Sale_ID
Date
Quantity
Total
30001
2016-08-02
10
10
10001
2016-12-24
10
20
10005
2016-12-24
30
50
40001
2017-01-09
40
90
10006
2017-01-18
10
100
20001
2017-02-12
20
120

ウィンドウ関数としてのネストされた集計関数

ウィンドウ関数内にネストされた集計関数は、パーティションごとに個別の計算を実行します。
ネストされた集計関数を式トランスフォーメーションに含め、そのトランスフォーメーションをウィンドウ関数用に設定した場合、関数はパーティションごとに個別の計算を実行します。
データをP2でパーティション化し、先行する行および後続のすべての行のフレームを指定します。ウィンドウ関数は次の計算を実行します。
  1. 1COUNT (P1)により、各行に1つの値を生成します。COUNTは、パーティションの行のうち、NULL以外の値を持つ行の数を返します。
  2. 2その値のMEDIANは、COUNTによって生成された値のウィンドウのメジアンを生成します。
ウィンドウ関数は次の出力を生成します。
P1
P2
Output
10
1
3
7
1
3
12
1
3
11
2
4
13
2
4
8
2
4
10
2
4
複数のウィンドウ関数を使用して、集計関数をネストできます。以下に例を示します。
LAG ( LEAD( MAX( FIRST ( p1 )))
注: 複数のウィンドウ関数LEADとLAGをネストすることはできますが、複数の集計関数を1つの集計関数内にネストすることはできません。