関数の概要
集計関数はマッピングタスクで使用できます。マッピングタスクと同期タスクでは、他のすべての関数を使用できます。
トランスフォーメーション言語には次の関数カテゴリが用意されています。
- •集計
- •変換
- •データクレンジング
- •日付
- •エンコーディング
- •財務
- •水平拡張
- •数値
- •科学
- •特殊
- •文字列
- •テスト
- •Window
Aggregate関数
集計関数は、選択した複数のフィールドの非NULL値を要約した値を返します。
集計関数を使用すると、次のタスクを実行できます。
- •グループ内のすべての行に関して、ある1つの値を計算する。
- •アグリゲータオブジェクトで各グループに対して1つの値を返す。
- •選択したフィールドの特定の行に対して値を計算するようなフィルタを適用する。
- •演算子を使って関数内で算術演算を実行する。
- •同じソース列から得られた複数の集計値を1回のパスで計算する。
マッピングタスクのみで集計関数を使用する。
トランスフォーメーション言語には、以下の集計関数が用意されています。
- •AVG
- •COUNT
- •FIRST
- •LAST
- •MAX (Date)
- •MAX (Number)
- •MAX (String)
- •MEDIAN
- •MIN (Date)
- •MIN (Number)
- •MIN (String)
- •PERCENTILE
- •STDDEV
- •SUM
- •VARIANCE
集計関数は、アグリゲータオブジェクトでのみ使用できます。他の集計関数の中にネストできる集計関数は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_BIGINT
- •TO_CHAR(Date)
- •TO_CHAR(Number)
- •TO_DATE
- •TO_DECIMAL
- •TO_FLOAT
- •TO_INTEGER
データクレンジング関数
トランスフォーメーション言語には、データエラーをなくすための関数群があります。データクレンジング関数を使用して、以下のタスクを完了できます。
- •ソース値のテスト。
- •ソース値のデータ型の変換。
- •文字列値の切り詰め。
- •文字列内の文字の上書き。
- •文字列のエンコード。
- •正規表現パターンのマッチ。
トランスフォーメーション言語には、以下のデータクレンジング関数が用意されています。
- •BETWEEN
- •GREATEST
- •IN
- •INSTR
- •IS_DATE
- •IS_NUMBER
- •IS_SPACES
- •ISNULL
- •LEAST
- •LTRIM
- •METAPHONE
- •REG_EXTRACT
- •REG_MATCH
- •REG_REPLACE
- •REPLACECHR
- •REPLACESTR
- •RTRIM
- •SOUNDEX
- •SUBSTR
- •TO_BIGINT
- •TO_CHAR
- •TO_DATE
- •TO_DECIMAL
- •TO_FLOAT
- •TO_INTEGER
日付関数
トランスフォーメーション言語にはいくつかの日付関数が用意され、日付を丸めたり、切り捨てたり、比較したり、日付の一部を抽出したり、日付に算術演算を行ったりできます。
どの日付関数にも、日付データ型を持つ任意の値を渡すことができます。ただし、日付関数に文字列を渡したい場合は、まずTO_DATE関数を使って文字列をトランスフォーメーションのDate/Timeデータ型に変換する必要があります。
トランスフォーメーション言語には、以下の日付関数が用意されています。
- •ADD_TO_DATE
- •DATE_COMPARE
- •DATE_DIFF
- •GET_DATE_PART
- •LAST_DAY
- •MAKE_DATE_TIME
- •ROUND
- •SET_DATE_PART
- •Systimestamp
- •TRUNC
一部の日付関数にはformat引数が含まれています。この引数には、トランスフォーメーション言語のフォーマット文字列のいずれかを指定します。日付フォーマット文字列は国際化されていません。
トランスフォーメーションのDate/Timeデータ型では、ミリ秒をサポートしていません。したがって、ミリ秒を含む日付を渡した場合、データ統合では、日付のミリ秒部分が切り詰められます。
エンコード関数
トランスフォーメーション言語には、データのエンコード、暗号化、圧縮、およびチェックサムのための以下の関数が用意されています。
- •AES_DECRYPT
- •AES_ENCRYPT
- •AES_GCM_DECRYPT
- •AES_GCM_ENCRYPT
- •COMPRESS
- •CRC32
- •DEC_BASE64
- •DECOMPRESS
- •ENC_BASE64
- •MD5
- •SHA256
財務関数
トランスフォーメーション言語には、以下の財務関数が用意されています。
水平拡張関数
水平拡張関数を使用して、水平マクロ式を作成します。
水平拡張関数には、%OPR_<function_type>%の命名規則を使用します。
水平拡張関数では、丸カッコではなく角かっこ([ ])を使用します。
トランスフォーメーション言語には、次の水平拡張関数が用意されています。
- •%OPR_CONCAT%
- •%OPR_CONCATDELIM%
- •%OPR_IIF%
- •%OPR_SUM%
数値関数
トランスフォーメーション言語には、以下の数値関数が用意されています。
- •ABS
- •CEIL
- •CONV
- •CUME
- •EXP
- •FLOOR
- •LN
- •LOG
- •MOD
- •MOVINGAVG
- •MOVINGSUM
- •POWER
- •RAND
- •ROUND
- •SIGN
- •SQRT
- •TRUNC
科学関数
トランスフォーメーション言語には、次の科学関数が用意されています。
- •COS
- •COSH
- •SIN
- •SINH
- •TAN
- •TANH
特殊関数
トランスフォーメーション言語には、次の特殊関数が用意されています。
- •ABORT
- •DECODE
- •ERROR
- •IIF
- •SETCOUNTVARIABLE
- •SETMAXVARIABLE
- •SETMINVARIABLE
- •SETVARIABLE
特殊関数の中に他の関数をネストすることもできます。
文字列関数
トランスフォーメーション言語には、次の文字列関数が用意されています。
- •ASCII
- •CHOOSE
- •CHR
- •CHRCODE
- •CONCAT
- •INDEXOF
- •INITCAP
- •INSTR
- •LENGTH
- •LOWER
- •LPAD
- •LTRIM
- •REPLACECHR
- •REPLACESTR
- •REVERSE
- •RPAD
- •RTRIM
- •SUBSTR
- •UPPER
文字データを評価するため、文字列関数LOWER、UPPER、およびINITCAPでは、そのタスクを実行するSecure Agentのコードページを使用します。
テスト関数
トランスフォーメーション言語には、次のテスト関数が用意されています。
- •ISNULL
- •IS_DATE
- •IS_NUMBER
- •IS_SPACES
ウィンドウ関数
詳細モードでは、現在の行に関連した一連の行で計算を実行するウィンドウ関数のグループがトランスフォーメーション言語に含まれます。この関数は、入力行ごとに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つの出力値が返されます。各行の累計を得るため、関数の境界に対してフレームを定義できます。
[ウィンドウ]タブで、次のプロパティを設定します。
- •開始オフセット: 前のすべての行
- •終了オフセット: 0
- •オーダーキー: 昇順の日付
次の集計関数を定義します。
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でパーティション化し、先行する行および後続のすべての行のフレームを指定します。ウィンドウ関数は次の計算を実行します。
- 1COUNT (P1)により、各行に1つの値を生成します。COUNTは、パーティションの行のうち、NULL以外の値を持つ行の数を返します。
- 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つの集計関数内にネストすることはできません。