[comment]: # attributes: notoc

[comment]: # ({e82d3ccb-a4f8cca1})
# 5 トレンド関数

トレンド関数は、[履歴関数](/manual/appendix/functions/history)とは対照的に、計算に[トレンド](/manual/config/items/history_and_trends#keeping-trends)データを使用します。

トレンドには、1時間ごとの集計値が保存されます。
トレンド関数はこれらの時間平均を使用するため、長期的な分析に役立ちます。

トレンド関数の結果はキャッシュされるため、同じパラメータで同じ関数を複数回呼び出しても、データベースから取得される情報は1回のみです。
トレンド関数キャッシュは、[TrendFunctionCacheSize](/manual/appendix/config/zabbix_server#trendfunctioncachesize) サーバーパラメータによって制御されます。

トレンド関数**のみ**を参照するトリガーは、式内の最小の時間期間ごとに1回評価されます。
たとえば、次のようなトリガー

```default
trendavg(/host/key,1d:now/d) > 1 or trendavg(/host/key2,1w:now/w) > 2
```

は、1日ごとに1回評価されます。
トリガーにトレンド関数と履歴関数（または[日付と時刻](/manual/appendix/functions/time)および/または[nodata()](/manual/appendix/functions/history#nodata)）の両方が含まれている場合は、[通常の原則](/manual/config/triggers#calculation-time)に従って計算されます。

ここに記載されているすべての関数は、以下でサポートされています。

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

関数は追加情報なしで一覧表示されています。
詳細については、関数をクリックしてください。

|Function|Description|
|--|--------|
|[baselinedev](#baselinedev)|直近のデータ期間と、先行するシーズン内の同じデータ期間との間の偏差数（stddevpopアルゴリズムによる）を返します。|
|[baselinewma](#baselinewma)|重み付き移動平均アルゴリズムを使用して、複数の等しい時間期間（「シーズン」）における同じ時間枠のデータを平均化し、ベースラインを計算します。|
|[trendavg](#trendavg)|定義された時間期間内のトレンド値の平均。|
|[trendcount](#trendcount)|定義された時間期間内のトレンド値の計算に使用された、正常に取得された履歴値の数。|
|[trendmax](#trendmax)|定義された時間期間内のトレンド値の最大値。|
|[trendmin](#trendmin)|定義された時間期間内のトレンド値の最小値。|
|[trendstl](#trendstl)|検出期間中の異常の割合を返します。これは 0 から 1 の間の10進値で、`((異常値の数)/(値の総数))` です。|
|[trendsum](#trendsum)|定義された時間期間内のトレンド値の合計。|

[comment]: # ({/e82d3ccb-a4f8cca1})

[comment]: # ({9b47c9ce-2a63633f})
##### 共通パラメータ

-   `/host/key` は共通の必須の第1パラメータです
-   `time period:time shift` は共通の第2パラメータで、以下を意味します。
    -   **time period** - 期間（最小値は '1h'）。\<N>\<time unit> の形式で定義します。ここで、`N` は時間単位の数、`time unit` は h（時間）、d（日）、w（週）、M（月）、または y（年）です。
    -   **time shift** - [期間のオフセット](/manual/config/triggers/expression#time-shift)（関数の例を参照）

[comment]: # ({/9b47c9ce-2a63633f})

[comment]: # ({405ac9eb-bbe5ecf2})
### 関数の詳細

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

-   関数パラメータはカンマで区切ります
-   オプションの関数パラメータ（またはパラメータの一部）は `<` `>` で示されます
-   関数固有のパラメータは各関数ごとに説明されています
-   `/host/key` および `time period:time shift` パラメータは、決して引用符で囲んではいけません

[comment]: # ({/405ac9eb-bbe5ecf2})

[comment]: # ({e17e8d2f-f42e2c92})
##### baselinedev(/host/key,data period:time shift,season unit,num seasons) {#baselinedev}

直近のデータ期間と、先行する各シーズンにおける同じデータ期間との間の偏差数を、stddevpop アルゴリズムで返します。<br>

パラメータ: 

-   [共通パラメータ](#common-parameters)を参照してください<br>
-   **data period** - シーズン内のデータ収集期間。<N><time unit> の形式で定義します。ここで:<br>`N` - 時間単位の数<br>`time unit` - h（時間）、d（日）、w（週）、M（月）、y（年）。season 以下である必要があります<br>
-   **season unit** - 1 シーズンを定義するカレンダー単位（h、d、w、M、y）。data period より小さくすることはできません<br> 
-   **num seasons** - 評価するシーズン数

例:

```default
baselinedev(/host/key,1d:now/d,"M",6) #前日と、過去 6 か月における同じ日との間の標準偏差数（母集団）を計算します。前月に該当する日付が存在しない場合は、その月の末日が使用されます（Jul,31 は Jan,31、Feb, 28、... June, 30 と比較して分析されます）
baselinedev(/host/key,1h:now/h,"d",10)  #前の 1 時間と、直前の 10 日間における同じ時刻の間の母標準偏差数を計算します
```

[comment]: # ({/e17e8d2f-f42e2c92})

[comment]: # ({508adac0-447a9dac})
##### baselinewma(/host/key,data period:time shift,season unit,num seasons) {#baselinewma}

加重移動平均アルゴリズムを使用して、複数の等しい時間期間（「シーズン」）における同じ時間枠のデータを平均化することで、ベースラインを計算します。<br>

パラメータ: 

-   [共通パラメータ](#common-parameters)を参照してください<br>
-   **data period** - シーズン内のデータ収集期間で、<N><time unit> として定義されます。ここで:<br>`N` - 時間単位の数<br>`time unit` - h（時間）、d（日）、w（週）、M（月）または y（年）で、season 以下でなければなりません<br>Time shift - 時間期間のオフセットで、シーズン単位でのデータ収集時間枠の終了位置を定義します（例を参照）<br>
-   **season unit** - 1つのシーズンを定義するカレンダー単位（h、d、w、M、y）。data period より小さくすることはできません<br>
-   **num seasons** - 評価するシーズン数

例:

```default
baselinewma(/host/key,1h:now/h,"d",3) #昨日で終了する直近3つの完全な日について、同じ時刻帯のベースラインを計算します。"now" が月曜日の13:30の場合、金曜日、土曜日、日曜日の12:00-12:59のデータが分析されます
baselinewma(/host/key,2h:now/h,"d",3) #昨日で終了する直近3つの完全な日について、同じ2時間枠のベースラインを計算します。"now" が月曜日の13:30の場合、金曜日、土曜日、日曜日の11:00-12:59のデータが分析されます
baselinewma(/host/key,1d:now/d,"M",4) #直前の完全な月より前の4か月について、「昨日」と同じ日付のベースラインを計算します。必要な日付が存在しない場合は、その月の最終日が使用されます。今日が9月1日の場合、7月31日、6月30日、5月31日、4月30日のデータが分析されます。
```

[comment]: # ({/508adac0-447a9dac})

[comment]: # ({2e9dd145-50d2db8d})
##### trendavg(/host/key,time period:time shift) {#trendavg}

定義された期間内のトレンド値の平均です。

パラメータ: 

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

例:

```default
trendavg(/host/key,1h:now/h) #直前の1時間の平均（例: 12:00-13:00）
trendavg(/host/key,1h:now/h-1h) #2時間前の1時間の平均（11:00-12:00）
trendavg(/host/key,1h:now/h-2h) #3時間前の1時間の平均（10:00-11:00）
trendavg(/host/key,1M:now/M-1y) #1年前の前月の平均
```

[comment]: # ({/2e9dd145-50d2db8d})

[comment]: # ({533dfdf1-d66e1f00})
##### trendcount(/host/key,time period:time shift) {#trendcount}

定義された期間内でトレンド値の計算に使用された、正常に取得されたヒストリ値の数。

パラメータ: 

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

例:

```default
trendcount(/host/key,1h:now/h) #直前の1時間の値の数（例: 12:00-13:00）
trendcount(/host/key,1h:now/h-1h) #2時間前の1時間の値の数（11:00-12:00）
trendcount(/host/key,1h:now/h-2h) #3時間前の1時間の値の数（10:00-11:00）
trendcount(/host/key,1M:now/M-1y) #1年前の先月の値の数
```

[comment]: # ({/533dfdf1-d66e1f00})

[comment]: # ({f0a89e58-43665d11})
##### trendmax(/host/key,time period:time shift) {#trendmax}

定義された期間内のトレンド値における最大値。

パラメータ: 

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

例:

```default
trendmax(/host/key,1h:now/h) #直前の1時間の最大値（例: 12:00-13:00）
trendmax(/host/key,1h:now/h) - trendmin(/host/key,1h:now/h) → 直前の1時間（12:00-13:00）における最大値と最小値の差（トレンド差分）を計算
trendmax(/host/key,1h:now/h-1h) #2時間前の最大値（11:00-12:00）
trendmax(/host/key,1h:now/h-2h) #3時間前の最大値（10:00-11:00）
trendmax(/host/key,1M:now/M-1y) #1年前の前月の最大値
```

[comment]: # ({/f0a89e58-43665d11})

[comment]: # ({793872d7-3c0143a2})
##### trendmin(/host/key,time period:time shift) {#trendmin}

定義した期間内のトレンド値の最小値。

パラメータ: 

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

例:

```default
trendmin(/host/key,1h:now/h) #直前の1時間の最小値（例: 12:00-13:00）
trendmax(/host/key,1h:now/h) - trendmin(/host/key,1h:now/h) → 直前の1時間（12:00-13:00）における最大値と最小値の差（トレンド差分）を計算
trendmin(/host/key,1h:now/h-1h) #2時間前（11:00-12:00）の最小値
trendmin(/host/key,1h:now/h-2h) #3時間前（10:00-11:00）の最小値
trendmin(/host/key,1M:now/M-1y) #1年前の前月の最小値
```

[comment]: # ({/793872d7-3c0143a2})

[comment]: # ({0ebc63ad-aba289ed})
##### trendstl(/host/key,eval period:time shift,detection period,season,<deviations>,<devalg>,<s window>) {#trendstl}

検出期間における異常の割合を返します。値は 0 から 1 の間の小数で、`((異常値の数)/(値の総数))` です。

パラメータ: 

-   [共通パラメータ](#common-parameters)を参照<br>
-   **eval period** - 分解対象とする期間（最小 '1h'）。<N><time unit> の形式で定義します。ここで<br>`N` - 時間単位の数<br>`time unit` - h（時間）、d（日）、w（週）、M（月）、または y（年）<br>
-   **detection period** - eval period の終了前のうち、異常を計算する期間（最小 '1h'、eval period より長くすることはできません）。<N><time unit> の形式で定義します。ここで<br>`N` - 時間単位の数<br>`time unit` - h（時間）、d（日）、w（週）<br>
-   **season** - 繰り返しパターン（「季節性」）が想定される最短の期間（最小 '2h'、eval period より長くすることはできません。また、eval period 内のエントリ数は、結果として得られる頻度（season/h）の 2 倍より大きい必要があります）。<N><time unit> の形式で定義します。ここで<br>`N` - 時間単位の数<br>`time unit` - h（時間）、d（日）、w（週）
-   **deviations** - 異常と見なす偏差の数（devalg により計算、小数可）（1 以上である必要があります。デフォルトは 3）
-   **devalg**（二重引用符で囲む必要があります） - 偏差アルゴリズム。*stddevpop*、*stddevsamp*、または *mad*（デフォルト）を指定できます
-   **s window** - 季節成分抽出のための loess ウィンドウのスパン（ラグ数単位）（デフォルトは 10 * eval period 内のエントリ数 + 1）

例:

```default
trendstl(/host/key,100h:now/h,10h,2h) #直近 100 時間のトレンドデータを分析し、その期間の最後の 10 時間における異常率を求めます。周期性は 2h を想定し、評価期間の remainder series の値が、その remainder series の MAD の 3 偏差に達した場合に異常と見なされます
trendstl(/host/key,100h:now/h-10h,100h,2h,2.1,"mad") #10 時間前までの 100 時間分のトレンドデータを分析し、その全期間における異常率を求めます。周期性は 2h を想定し、評価期間の remainder series の値が、その remainder series の MAD の 2.1 偏差に達した場合に異常と見なされます
trendstl(/host/key,100d:now/d-1d,10d,1d,4,,10) #1 日前までの 100 日分のトレンドデータを分析し、その期間の最後の 10d における異常率を求めます。周期性は 1d を想定し、評価期間の remainder series の値が、その remainder series の MAD の 4 偏差に達した場合に異常と見なされます。また、季節成分抽出のための loess ウィンドウのデフォルトスパン "10 * eval period 内のエントリ数 + 1" を、10 ラグのスパンで上書きしています
trendstl(/host/key,1M:now/M-1y,1d,2h,,"stddevsamp") #1 年前の前月を分析し、その期間の最後の 1 日における異常率を求めます。周期性は 2h を想定し、評価期間の remainder series の値が、その remainder series の標本標準偏差の 3 偏差に達した場合に異常と見なされます
```

[comment]: # ({/0ebc63ad-aba289ed})

[comment]: # ({f897c466-1b9f4c40})
##### trendsum(/host/key,time period:time shift) {#trendsum}

定義された期間内のトレンド値の合計です。

パラメータ: 

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

例:

```default
trendsum(/host/key,1h:now/h) #直前の1時間の合計（例: 12:00-13:00）
trendsum(/host/key,1h:now/h-1h) #2時間前の1時間の合計（11:00-12:00）
trendsum(/host/key,1h:now/h-2h) #3時間前の1時間の合計（10:00-11:00）
trendsum(/host/key,1M:now/M-1y) #1年前の前月の合計
```

[comment]: # ({/f897c466-1b9f4c40})

[comment]: # ({ba59dd3a-9e520569})

[サポートされているすべての関数](/manual/appendix/functions)を参照してください。

[comment]: # ({/ba59dd3a-9e520569})

