次のようなプロパティを持つ関数を「集積関数」と呼びます。
f(f(x0) U f(x1) U ... U f(xn)) = f(x0 U x1 U ... U xn)
xn は、任意のデータセットです。つまり、データのサブセットに集積関数を適用し、その結果に再度集積関数を適用すると、データ全体に集積関数を適用した場合と同じ結果になります。たとえば、指定のデータセットの合計を計算する関数、SUM について考えてみましょう。生のデータが {2, 1, 2, 5, 4, 3, 6, 4, 2} である場合、このデータセット全体に SUM を適用した結果は {29} になります。同様に、最初の 3 つの要素で構成されたサブセットに SUM を適用した結果は {5}、続く 3 つの要素に SUM を適用した結果は {12}、残りの 3 つの要素に SUM を適用した結果は {12} になります。これらの結果である {5, 12, 12} に SUM を適用すると、元のデータに SUM を適用したときと同じ結果 (ここでは {29}) が得られます。このため、SUM は「集積関数」と呼ばれます。
すべての関数が集積関数として機能するわけではありません。たとえば、データセットの中央値を計算する関数、MEDIAN は、集積関数ではありません。中央値とは、データセット内の要素を大きさ順に並べたとき、ちょうど真ん中にくる要素のことです。MEDIAN を得るには、データセットをソートして、その真ん中の要素を選択します。最初の生のデータに戻りましょう。最初の 3 つの要素から成るデータセットに MEDIAN を適用した場合、結果は {2} になります (ソート済みセットは {1, 2, 2} で、中央の要素は {2} です)。同様に、次の 3 つの要素に MEDIAN を適用した結果は {4}、最後の 3 つの要素に MEDIAN を適用した結果は {4} になります。このように、3 つの要素から成る各サブセットに MEDIAN を適用した場合、{2, 4, 4} というデータセットが得られます。このデータセットに MEDIAN を適用すると、結果は {4} になります。これに対して、元のデータセットをソートすると、{1, 2, 2, 2, 3, 4, 4, 5, 6} になります。このデータセットに MEDIAN を適用すると、結果は {3} になります。このように、結果が一致しないので、MEDIAN は集積関数ではありません。
データセット関連の情報を得たいときに使用する関数の多くは、集積関数です。これらの関数を使って、データセット内の要素数を数えたり、データセットの最小値や最大値を求めたり、データセット内のすべての要素の合計を計算したりできます。データセットの平均値を特定するには、セット内の要素数を数える関数と、セット内の要素を合計する関数を使用します。
ただし、集積関数以外にも、便利な関数は存在します。たとえば、データセットのモード (もっともよく使用する要素) を計算する関数、データセットの中央値を計算する関数、データセットの標準偏差を計算する関数などです。
データのトレース時に集積関数を適用すると、多数の利点があります。
データセット全体を格納する必要がありません。セットに新しい要素が追加されるたびに、現在の中間結果と新しい要素から成るセットが作成され、集積関数が計算されます。新しい結果の計算が完了したら、新しい要素は破棄してかまいません。この処理により、データポイント数が非常に多くなっても、記憶域の消費量を少なく抑えることができます。
データ収集が原因で、スケーラビリティに問題が起こることはありません。集積関数は、中間結果を共用のデータ構造に格納せず、CPU 単位で保存します。その後、この CPU 単位の中間結果のセットに集積関数が適用され、システム全体の最終的な結果が得られます。