CUMSUMファンクションは、時間ディメンション全体または別のディメンション全体の累積合計を計算するファンクションです。合計されるデータが1次元である場合、CUMSUMでは、一連の累積合計を1回(該当ディメンションのすべての値に対し1回)行います。データに、合計する対象のディメンション以外のディメンションがある場合、CUMSUMは、他のディメンションにあるステータス中の値の各組合せに対し別個に、一連の累積合計を行います。
パラメータ
値を合計する対象の数値変数または演算。たとえば、UNITSなど。
cum-expressionが多次元の場合、CUMSUMによりファンクションの処理中に使用する一時変数が作成されます。STATUSキーワードを指定すると、一時変数のサイズの計算時に、ディメンションのデフォルト・ステータスのかわりに現行のステータスが使用されます。式のディメンションがいくつかの値に制限されており、物理的に断片化されている場合は、STATUSを指定することで、CUMSUMのパフォーマンスを向上させることができます。
結果がステータス外になる式(たとえば、LEADまたはLAGファンクションを使用した場合、または修飾データ参照を使用した場合)でCUMSUMをSTATUSキーワードとともに使用した場合、ステータス外の結果はNA
として返されます。
注意: 合計されるデータが1次元の場合にSTATUSキーワードを指定すると、エラーが発生します。 |
合計の対象とする、cum-expressionのディメンション。
各新年の開始時など、新しいリセット・ディメンション値ごとに一連の累積合計をやり直すかどうかを指定します。リセット・ディメンションは、次のいずれかです。
明示的に定義されたリレーションを介してtotal-dimに関連付けられている任意のディメンション。
total-dimがDAY、WEEK、MONTH、QUARTER、YEAR型のいずれかである場合、DAY、WEEK、MONTH、QUARTERまたはYEAR型の任意のディメンション。CUMSUMでは2つのディメンション間の暗黙的なリレーションを使用するため、それらは明示的なリレーションで関連付けられている必要はありません。「暗黙的なリレーションの変更」を参照してください。
total-dimによってディメンション化されたリレーション。CUMSUMでは、関連ディメンションをリセット・ディメンションとして使用しますが、これによって、リレーションが複数ある際にどのリレーションを使用するかを選択できます。
CUMSUMで、現行のステータスにあるtotal-dimの値のみを使用するように指定します。INSTATを指定しないと、現行のステータスにかかわらず、total-dimのすべての値の合計が算出されます。「デフォルトで現行のステータスを無視するINSTAT」を参照してください。
使用上の注意
暗黙的なリレーションの変更
total-dim引数とreset-dim引数の両方にDAY、WEEK、MONTH、QUARTERまたはYEAR型を持つディメンションを指定すると、CUMSUMでは、明示的なリレーションが存在する場合にも、2つのディメンション間の暗黙的なリレーションを使用します。ただし、reset-dim引数に対しリレーションの名前を指定することで、このデフォルトの動作を無効にして、明示的なリレーションを使用できます。
デフォルトで現行のステータスを無視するINSTAT
INSTATキーワードを指定しない場合は、CUMSUMでは、合計の計算時に現行のステータスを無視します。全体を合計するディメンションがMONTHであるとします(INSTATは指定されていません)。ある月のCUMSUM合計には、それ以前の月のいくつかがステータス中でなくても、それらのすべての月の値が使用されます。リセット・ディメンションが指定されていると、ある月の合計には、先行する月のうち、リセット・ディメンションの同じ値に呼応するすべての月の値が使用されます(たとえば、同じ年内の先行するすべての月)。年の初めから当日までの合計を計算するには、リセット・ディメンションとしてYEARを指定します。
例
例7-56 多次元CUMSUM計算
この例では、1996年の最初の6か月間について、Atlanta地区におけるテントおよびカヌーの個数(units
)の累積合計を計算します。レポートには、月ごとの個数、リセット・ディメンションとして年(year
)を使用して計算した年の初めから当日までの合計数、およびリセット・ディメンションなしに先行するすべての月で計算した合計数が示されます。次の文を発行するとします。
LIMIT district TO 'Atlanta' LIMIT product TO 'Tents' 'Canoes' LIMIT month TO 'Jan96' TO 'Jun96' REPORT DOWN month units CUMSUM(units, month year) - CUMSUM(units, month)
次のレポートが表示されます。
DISTRICT: ATLANTA ------------------------PRODUCT------------------------ ---------TENTS------------- ---------CANOES------------ CUMSUM(UNI CUMSUM(UNI TS, MONTH CUMSUM(UNI TS, MONTH CUMSUM(UNI MONTH UNITS YEAR) TS, MONTH) UNITS YEAR) TS, MONTH) ----- -------- --------- ---------- ------- --------- ---------- Jan96 279 279 5,999 281 281 5,162 Feb96 305 584 6,304 309 590 5,471 Mar96 356 940 6,660 386 976 5,857 Apr96 537 1,477 7,197 546 1,522 6,403 May96 646 2,123 7,843 525 2,047 6,928 Jun96 760 2,883 8,603 608 2,655 7,536
CUMSUM(UNITS, MONTH)の合計には、最初の月JAN95以降のすべての月の値が含まれます。CUMSUM(UNITS, MONTH YEAR)の合計には、JAN96以降の値のみが含まれます。
例7-57 四半期でのリセット
この例では、同じ製品および地区について、1996年1年間の累積合計を計算します。リセット・ディメンションとしてquarter
が指定されているため、合計は各四半期の初めで累積が開始されます。Jan96
、Apr96
、Jul96
およびOct96
の累積合計は、これらの月の個数と同じです。次の文を発行するとします。
LIMIT district TO 'Atlanta' LIMIT product TO 'Tents' 'Canoes' limit month TO year 'Yr96' REPORT DOWN month units CUMSUM(units, month quarter)
次のレポートが表示されます。
DISTRICT: ATLANTA ------------------PRODUCT------------------ --------TENTS-------- -------CANOES-------- CUMSUM(UNI CUMSUM(UNI TS, MONTH TS, MONTH MONTH UNITS QUARTER) UNITS QUARTER) ------------ ---------- ---------- ---------- ---------- Jan96 279 279 281 281 Feb96 305 584 309 590 Mar96 356 940 386 976 Apr96 537 537 546 546 May96 646 1,183 525 1,071 Jun96 760 1,943 608 1,679 Jul96 852 852 626 626 Aug96 730 1,582 528 1,154 Sep96 620 2,202 520 1,674 Oct96 554 554 339 339 Nov96 380 934 309 648 Dec96 284 1,218 288 936