[comment]: # attributes: notoc

[comment]: # ({e9a7c12e-ee60e21e})
# 1 集計関数

特に明記されていない限り、ここに一覧されているすべての関数は次でサポートされています。

-   [トリガー式](/manual/config/triggers/expression)
-   [計算アイテム](/manual/config/items/itemtypes/calculated)
-   [式マクロ](/manual/config/macros/expression_macros)

集計関数は、次のいずれかで使用できます。

-   アイテムの履歴。たとえば、`min(/host/key,1h)`
-   [foreach 関数](/manual/appendix/functions/aggregate/foreach)を
    唯一のパラメーターとして使用。たとえば、`min(last_foreach(/*/key))`（計算アイテムでのみ使用可能。トリガーでは使用できません）

関数は追加情報なしで一覧されています。関数をクリックすると、詳細を確認できます。

|Function|Description|
|--|--------|
|[avg](#avg)|定義された評価期間内におけるアイテムの平均値。|
|[bucket_percentile](#bucket-percentile)|ヒストグラムのバケットからパーセンタイルを計算します。|
|[count](#count)|foreach 関数によって返される配列内の値の数。|
|[histogram_quantile](#histogram-quantile)|ヒストグラムのバケットから φ 分位数を計算します。|
|[item_count](#item-count)|フィルター条件に一致する、設定内に存在するアイテム数。|
|[kurtosis](#kurtosis)|定義された評価期間内に収集された値の「裾の厚さ」。|
|[mad](#mad)|定義された評価期間内に収集された値の中央値絶対偏差。|
|[max](#max)|定義された評価期間内におけるアイテムの最大値。|
|[min](#min)|定義された評価期間内におけるアイテムの最小値。|
|[skewness](#skewness)|定義された評価期間内に収集された値の確率分布の非対称性。|
|[stddevpop](#stddevpop)|定義された評価期間内に収集された値の母標準偏差。|
|[stddevsamp](#stddevsamp)|定義された評価期間内に収集された値の標本標準偏差。|
|[sum](#sum)|定義された評価期間内に収集された値の合計。|
|[sumofsquares](#sumofsquares)|定義された評価期間内に収集された値の二乗和。|
|[varpop](#varpop)|定義された評価期間内に収集された値の母分散。|
|[varsamp](#varsamp)|定義された評価期間内に収集された値の標本分散。|

[comment]: # ({/e9a7c12e-ee60e21e})

[comment]: # ({2acead3e-4d343eb8})
#### 共通パラメータ

-   `/host/key` は、ホストアイテムの履歴を参照する関数に共通する必須の第1パラメータです
-   `(sec|#num)<:time shift>` は、ホストアイテムの履歴を参照する関数に共通する第2パラメータです。ここで:
    -   **sec** - 最大 [評価期間](/manual/config/triggers#evaluation-period) を秒単位で指定します（時間の [接尾辞](/manual/appendix/suffixes) を使用できます）
    -   **\#num** - 直近に収集された値の中での最大 [評価範囲](/manual/config/triggers#evaluation-period) を指定します（先頭にハッシュ記号が付く場合）
    -   **time shift**（省略可）- 評価時点を過去にずらすことができます。time shift の指定方法については、[詳細](/manual/config/triggers/expression#time-shift) を参照してください。

[comment]: # ({/2acead3e-4d343eb8})

[comment]: # ({c645f0e4-fe53c04c})
### 関数の詳細

関数パラメータに関する一般的な注意事項:

-   関数パラメータはカンマで区切ります
-   オプションの関数パラメータ（またはパラメータの一部）は
    `<` `>`で示されます
-   関数固有のパラメータは各関数で説明されています
-   `/host/key` および `(sec|#num)<:time shift>` パラメータは
    決して引用符で囲まないでください

[comment]: # ({/c645f0e4-fe53c04c})

[comment]: # ({85535fd1-f5993b4c})
##### avg(/host/key,(sec|#num)<:time shift>) {#avg}

定義された評価期間内のアイテムの平均値。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach functions](/manual/appendix/functions/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*。

パラメーターについては、[共通パラメーター](#common-parameters)を参照してください。

Time shift は、現在の平均値と、ある時点前の平均値を比較する必要がある場合に便利です。

例:

```default
avg(/host/key,1h) #calculate the average value for the last hour until now
avg(/host/key,#5) #calculate the average value of the five latest values
avg(/host/key,1h:now-1d) #calculate the average value for an hour from 25 hours ago to 24 hours ago from now
avg(last_foreach(/*/system.cpu.load[,avg1]?[group="MySQL Servers"])) #calculate the average processor load for all MySQL servers
avg(/host/proc.num,5m)>300 #trigger if the average number of processes in the last 5 minutes has been above 300
```

[comment]: # ({/85535fd1-f5993b4c})

[comment]: # ({9237fab4-af24d13f})
##### bucket_percentile(item filter,time period,percentage) {#bucket-percentile}

ヒストグラムのバケットからパーセンタイルを計算します。<br>

パラメーター: 

-   **item filter** - [item filter](/manual/appendix/functions/aggregate/foreach#item-filter-syntax) を参照してください。<br>
-   **time period** - [time period](/manual/appendix/functions/aggregate/foreach#time-period) を参照してください。<br>
-   **percentage** - パーセンテージ (0-100)。

コメント:

-   calculated item でのみサポートされます。
-   この関数は `histogram_quantile(percentage/100, bucket_rate_foreach(item filter, time period, 1))` のエイリアスです。

例:

```default
bucket_percentile(/*/http_request_duration_seconds_bucket[*],5m,95) #5分間の95パーセンタイルの応答時間を計算
bucket_percentile(/*/apiserver_request_duration_seconds_bucket[*],10m,99) #99パーセンタイルのAPIレイテンシーを計算
```

[comment]: # ({/9237fab4-af24d13f})

[comment]: # ({6e12bb62-3c498650})
##### count(func_foreach(item filter,<time period>),<operator>,<pattern>) {#count}

foreach 関数によって返された配列内の値の数を数えます。<br>
サポートされる [foreach 関数](/manual/appendix/functions/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*。

パラメーター: 

-   **func_foreach** - 返された値の数を数える対象となる foreach 関数です。詳細は [foreach 関数](/manual/appendix/functions/aggregate/foreach) を参照してください。count_foreach と bucket_rate_foreach は [追加パラメーター](/manual/appendix/functions/aggregate/foreach#additional-parameters) をサポートする点に注意してください。
-   **item filter** - [アイテムフィルター](/manual/appendix/functions/aggregate/foreach#item-filter-syntax) を参照してください。<br>
-   **time period** - [期間](/manual/appendix/functions/aggregate/foreach#time-period) を参照してください。<br>
-   **operator**（二重引用符で囲む必要があります）。サポートされる `operators`:<br>*eq* - 等しい<br>*ne* - 等しくない<br>*gt* - より大きい<br>*ge* - 以上<br>*lt* - より小さい<br>*le* - 以下<br>*like* - パターンを含む場合に一致（大文字小文字を区別）<br>*bitand* - ビット単位の AND<br>*regexp* - `pattern` で指定した正規表現に大文字小文字を区別して一致<br>*iregexp* - `pattern` で指定した正規表現に大文字小文字を区別せず一致<br>
-   **pattern** - 必要なパターン（文字列引数は二重引用符で囲む必要があります）。3 番目のパラメーターで *operator* が指定されている場合にサポートされます。

コメント: 

-   履歴データに関連する foreach 関数（max_foreach、avg_foreach など）と **count()** を使用すると、パフォーマンスに影響を及ぼす可能性があります。一方、設定データのみで動作する **exists_foreach()** を使用しても、そのような影響はありません。
-   オプションのパラメーター *operator* または *pattern* は、カンマの後に空のままにすることはできず、完全に省略する必要があります。
-   3 番目のパラメーターとして *bitand* を指定した場合、4 番目の `pattern` パラメーターには、スラッシュ `/` で区切った 2 つの数値を指定できます: **比較対象の数値/マスク**。count() は値と *mask* に対して「ビット単位の AND」を計算し、その結果を *比較対象の数値* と比較します。「ビット単位の AND」の結果が *比較対象の数値* と等しい場合、その値はカウントされます。<br>*比較対象の数値* と *mask* が等しい場合は、*mask* のみを指定できます（`/` は不要です）。
-   3 番目のパラメーターとして *regexp* または *iregexp* を指定した場合、4 番目の `pattern` パラメーターには通常の正規表現、または [グローバル](/manual/regular_expressions#global-regular-expressions)（`@` で始まる）正規表現を指定できます。グローバル正規表現の場合、大文字小文字の区別はグローバル正規表現の設定を継承します。regexp の照合では、浮動小数点値は常に小数点 `.` の後に 4 桁で表されます。また、大きな数値では、10 進数（データベースに保存）と 2 進数（Zabbix サーバーで使用）の表現の違いが 4 桁目の小数に影響する場合があることに注意してください。

例:

```default
count(max_foreach(/*/net.if.in[*],1h)) #calculate the number of net.if.in items that received data in the last hour until now
count(last_foreach(/*/vfs.fs.size[*,pused]),"gt",95) #calculate the number of file systems with over 95% of disk space used
```

[comment]: # ({/6e12bb62-3c498650})

[comment]: # ({f07c0983-f3ad7158})
##### histogram_quantile(quantile,bucket1,value1,bucket2,value2,...) {#histogram-quantile}

ヒストグラムのバケットから φ 分位数を計算します。<br>
サポートされる [foreach function](/manual/appendix/functions/aggregate/foreach): *bucket_rate_foreach*。

パラメーター:

-   **quantile** - 0 ≤ φ ≤ 1;<br>
-   **bucketN, valueN** - 手動で入力したペア (>=2) のパラメーター、または [bucket_rate_foreach](/manual/appendix/functions/aggregate/foreach) の応答。

コメント:

-   計算アイテムでのみサポートされます;
-   PromQL の '[histogram\_quantile](https://prometheus.io/docs/prometheus/latest/querying/functions/#histogram-quantile)' に機能的に対応します;
-   最後の 'Infinity' バケット (*"+inf"*) の値が 0 と等しい場合は -1 を返します。

例:

```default
histogram_quantile(0.75,1.0,last(/host/rate_bucket[1.0]),"+Inf",last(/host/rate_bucket[Inf]))
histogram_quantile(0.5,bucket_rate_foreach(//item_key,30s))
```

[comment]: # ({/f07c0983-f3ad7158})

[comment]: # ({90ddddd2-c8e3133a})
##### item_count(item filter) {#item-count}

フィルター条件に一致する、設定内の既存アイテムの数。<br>
サポートされる値の型: *Integer*。

パラメーター: 

-   **item filter** - アイテム選択の条件。ホストグループ、ホスト、アイテムキー、タグによる参照が可能です。ワイルドカードがサポートされています。詳細は [item filter](/manual/appendix/functions/aggregate/foreach#item-filter-syntax) を参照してください。<br>

コメント:

-   計算アイテムでのみサポートされます;
-   *count(exists_foreach(item_filter))* 関数のエイリアスとして動作します。

例:

```default
item_count(/*/agent.ping?[group="Host group 1"]) # "Host group 1" にある agent.ping アイテムを持つホスト数を計算する
```

[comment]: # ({/90ddddd2-c8e3133a})

[comment]: # ({ad613717-88a54099})
##### kurtosis(/host/key,(sec|#num)<:time shift>) {#kurtosis}

定義された評価期間内の収集値における確率分布の「裾の厚さ」を表します。関連項目: [Kurtosis](https://en.wikipedia.org/wiki/Kurtosis)。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach function](/manual/appendix/functions/aggregate/foreach): *last_foreach*。

パラメーター: [共通パラメーター](#common-parameters)を参照してください。

例:

```default
kurtosis(/host/system.cpu.util[,user],5m)>5 #5分間のCPU使用率の急激なスパイクに対するトリガー
```

[comment]: # ({/ad613717-88a54099})

[comment]: # ({1b18c768-bfb43a27})
##### mad(/host/key,(sec|#num)<:time shift>) {#mad}

定義された評価期間内に収集された値の中央値絶対偏差です。関連項目: [Median absolute deviation](https://en.wikipedia.org/wiki/Median_absolute_deviation)。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach function](/manual/appendix/functions/aggregate/foreach): *last_foreach*。

パラメーター: [共通パラメーター](#common-parameters)を参照してください。

例:

```default
last(/host/system.cpu.util[,user])>avg(/host/system.cpu.util[,user],1h)+3*mad(/host/system.cpu.util[,user],1h) #最後のCPU使用率の値が統計的に有意な場合にトリガー
```

[comment]: # ({/1b18c768-bfb43a27})

[comment]: # ({9ac9dd89-5882010b})
##### max(/host/key,(sec|#num)<:time shift>) {#max}

定義された評価期間内におけるアイテムの最大値。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach functions](/manual/appendix/functions/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*。

パラメーター: [共通パラメーター](#common-parameters)を参照してください。

例:

```default
max(/host/key,1h) - min(/host/key,1h) #calculate the difference between the maximum and minimum values within the last hour until now (the delta of values)
max(last_foreach(/*/vfs.fs.size[*,pused]?[group="Linux servers"])) #return the highest disk usage across all Linux servers
```

[comment]: # ({/9ac9dd89-5882010b})

[comment]: # ({471d86a5-ffd1e499})
##### min(/host/key,(sec|#num)<:time shift>) {#min}

定義された評価期間内におけるアイテムの最小値。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach functions](/manual/appendix/functions/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*。

パラメーター: [共通パラメーター](#common-parameters)を参照してください。

例:

```default
max(/host/key,1h) - min(/host/key,1h) #現在から直近1時間までの最大値と最小値の差を計算する（値のデルタ）
min(last_foreach(/*/vfs.file.contents["/sys/class/net/enp0s3/operstate"]?[group="Linux servers"])) #すべての Linux サーバーにわたる任意のインターフェースの稼働状態の最小値を返す
```

[comment]: # ({/471d86a5-ffd1e499})

[comment]: # ({8d966168-6b6fb273})
##### skewness(/host/key,(sec|#num)<:time shift>) {#skewness}

収集された値における、定義された評価期間内の確率分布の非対称性です。参照: [Skewness](https://en.wikipedia.org/wiki/Skewness)。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach function](/manual/appendix/functions/aggregate/foreach): *last_foreach*。

パラメーター: [共通パラメーター](#common-parameters)を参照してください。

例:

```default
skewness(/host/vm.memory.size[used],5m)<-20 #trigger on sudden negative drops indicating crashes/restarts
```

[comment]: # ({/8d966168-6b6fb273})

[comment]: # ({0b3aca57-11c2ea25})
##### stddevpop(/host/key,(sec|#num)<:time shift>) {#stddevpop}

定義された評価期間内の収集値における母標準偏差です。参照: [Standard deviation](https://en.wikipedia.org/wiki/Standard_deviation)。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach function](/manual/appendix/functions/aggregate/foreach): *last_foreach*。

パラメーター: [共通パラメーター](#common-parameters) を参照してください。

例:

```default
stddevpop(/host/system.cpu.util[,user],10m)>7 #trigger if CPU usage fluctuates heavily (population standard deviation is above 7 over 10 minutes)
```

[comment]: # ({/0b3aca57-11c2ea25})

[comment]: # ({f7108164-1db77c44})
##### stddevsamp(/host/key,(sec|#num)<:time shift>) {#stddevsamp}

定義された評価期間内に収集された値の標本標準偏差です。関連項目: [標準偏差](https://en.wikipedia.org/wiki/Standard_deviation)。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach function](/manual/appendix/functions/aggregate/foreach): *last_foreach*。

パラメーター: [共通パラメーター](#common-parameters)を参照してください。

この関数を動作させるには、少なくとも 2 つのデータ値が必要です。

例:

```default
stddevsamp(/host/system.cpu.util[,user],10m)>7 #CPU使用率が大きく変動している場合にトリガーする（10分間の標本標準偏差が7を超える）
```

[comment]: # ({/f7108164-1db77c44})

[comment]: # ({740c263a-0ecf79eb})
##### sum(/host/key,(sec|#num)<:time shift>) {#sum}

定義された評価期間内に収集された値の合計です。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach functions](/manual/appendix/functions/aggregate/foreach): *avg_foreach*, *count_foreach*, *exists_foreach*, *last_foreach*, *max_foreach*, *min_foreach*, *sum_foreach*。

パラメーター: [共通パラメーター](#common-parameters) を参照してください。

例:

```default
sum(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #すべての Linux サーバーの受信ネットワークトラフィックの合計を計算する
sum(last_foreach(/*/vfs.fs.size[/,total]?[group="MySQL Servers"])) #すべての MySQL サーバーのディスク容量の合計を計算する
sum(last_foreach(/*/net.dns[*,*,*])) #成功した DNS チェックの総数を計算する
```

[comment]: # ({/740c263a-0ecf79eb})

[comment]: # ({57e39842-6f6556f2})
##### sumofsquares(/host/key,(sec|#num)<:time shift>) {#sumofsquares}

定義された評価期間内の収集値における二乗和。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach function](/manual/appendix/functions/aggregate/foreach): *last_foreach*。

パラメーター: [共通パラメーター](#common-parameters) を参照してください。

例:

```default
sumofsquares(/host/calculated.net.if.rate,1m) #ネットワークトラフィック率（受信 vs 送信）の二乗和
sumofsquares(last_foreach(/*/net.if.in[*]?[group="Linux servers"])) #すべての Linux サーバーにわたる最新の受信ネットワークトラフィック値の二乗和
```

[comment]: # ({/57e39842-6f6556f2})

[comment]: # ({a61bfa35-d299bd33})
##### varpop(/ホスト/key,(sec|#num)<:time shift>) {#varpop}

定義された評価期間内に収集された値の母分散です。参照: [Variance](https://en.wikipedia.org/wiki/Variance)。<br>
サポートされる値の型: *Float*, *Integer*。<br>
サポートされる [foreach function](/manual/appendix/functions/aggregate/foreach): *last_foreach*。

パラメーター: [共通パラメーター](#common-parameters) を参照してください。

例:

```default
varpop(/ホスト/system.cpu.util[,user],10m)>50 #CPU使用率が大きく変動する場合にトリガーする（分散が10分間で50を超える）
```

[comment]: # ({/a61bfa35-d299bd33})

[comment]: # ({146891fb-b1bc041c})
##### varsamp(/ホスト/key,(sec|#num)<:time shift>) {#varsamp}

定義された評価期間内に収集された値の標本分散です。参照: [Variance](https://en.wikipedia.org/wiki/Variance)。<br>
対応する値の型: *Float*, *Integer*。<br>
対応する [foreach function](/manual/appendix/functions/aggregate/foreach): *last_foreach*。

パラメーター: [共通パラメーター](#common-parameters)を参照してください。

この関数を動作させるには、少なくとも2つのデータ値が必要です。

例:

```default
varsamp(/ホスト/system.cpu.util[,user],10m)>50 #CPU使用率が大きく変動している場合に障害とする（10分間の標本分散が50を超える）
```

[comment]: # ({/146891fb-b1bc041c})

[comment]: # ({ba59dd3a-541616fc})
[サポートされているすべての関数](/manual/appendix/functions)を参照してください。

[comment]: # ({/ba59dd3a-541616fc})

