[comment]: # translation:outdated

[comment]: # ({6537e63f-6537e63f})
# 1 Foreach-functies

[comment]: # ({/6537e63f-6537e63f})

[comment]: # ({84d63c3e-7d50e3a2})
#### Overzicht

Foreach-functies worden gebruikt in [aggregate berekeningen](/manual/config/items/itemtypes/calculated/aggregate) om één aggregatiewaarde terug te geven voor elk item dat is geselecteerd door de gebruikte **item filter**. Er wordt een array van waarden teruggegeven.

Bijvoorbeeld, de functie *avg_foreach* zal een array van waarden teruggeven, waarbij elke waarde de *gemiddelde* historische waarde is van het geselecteerde item gedurende het opgegeven tijdsinterval.

De [item filter](#item-filter-syntax) maakt deel uit van de syntax die wordt gebruikt door foreach-functies. Het gebruik van wildcards wordt ondersteund in de item filter, waardoor de benodigde items vrij flexibel kunnen worden geselecteerd.

[comment]: # ({/84d63c3e-7d50e3a2})

[comment]: # ({8c48f3cb-c9e1960d})
#### Ondersteunde functies

|Functie|Beschrijving|
|--|--------|
|*avg_foreach*|Geeft de gemiddelde waarde terug voor elk item.|
|*bucket_rate_foreach*|Geeft paren (bovengrens van de bucket, rate waarde) terug die geschikt zijn voor gebruik in de [histogram\_quantile()](/manual/appendix/functions/aggregate#aggregate_functions1) functie, waarbij "bovengrens van de bucket" de waarde is van het item key parameter gedefinieerd door het <parameter nummer> [parameter](#additional_parameters).|
|*count_foreach*|Geeft het aantal waarden terug voor elk item.|
|*exists_foreach*|Geeft '1' terug voor elk ingeschakeld item.|
|*last_foreach*|Geeft de laatste waarde terug voor elk item.|
|*max_foreach*|Geeft de maximale waarde terug voor elk item.|
|*min_foreach*|Geeft de minimale waarde terug voor elk item.|
|*sum_foreach*|Geeft de som van waarden terug voor elk item.|

[comment]: # ({/8c48f3cb-c9e1960d})

[comment]: # ({af871ae4-2cf639a9})
#### Parameters

Foreach-functies ondersteunen twee algemene parameters: itemfilter en tijd
periode:

    foreach_function (itemfilter, tijdsperiode)

bijvoorbeeld:

    avg_foreach(/*/mysql.qps?[group="MySQL-servers"],5m)

Sommige functies ondersteunen aanvullende parameters.

[comment]: # ({/af871ae4-2cf639a9})

[comment]: # ({9338bacd-737d2e38})
##### Artikelfilter

Met de **eerste** parameter kunnen we de items filteren waarin we geïnteresseerd zijn.
Er kan een complex filter worden gebruikt dat verwijst naar de itemsleutel, hostgroep en
tags, zoals geïllustreerd door de voorbeelden:

|Syntaxisvoorbeeld|Beschrijving|
|--|--|
|/host/key\[abc,\*\]|Komt overeen met vergelijkbare items op deze host.|
|/\*/key|Komt overeen met hetzelfde item van een willekeurige host.|
|/\*/key?\[group="ABC" en tag="tagname:value"\]|Komt overeen met hetzelfde item van een willekeurige host uit de ABC-groep met 'tagname:value'-tags.|
|/\*/key\[a,\*,c\]?\[(group="ABC" en tag="Tag1") of (group="DEF" en (tag="Tag2" of tag=" Tag3:value"))\]|Komt overeen met vergelijkbare items van elke host uit de ABC- of DEF-groep met de respectievelijke tags.|

Alle items waarnaar wordt verwezen, moeten bestaan en gegevens verzamelen. Alleen ingeschakelde items aan
ingeschakelde hosts zijn opgenomen in de berekeningen.

::: noteimportant
Als de itemsleutel van een item waarnaar wordt verwezen wordt gewijzigd,
het filter moet handmatig worden bijgewerkt.
:::

Het specificeren van een bovenliggende hostgroep omvat de bovenliggende groep en alle genest
hostgroepen met hun items.

[comment]: # ({/9338bacd-737d2e38})

[comment]: # ({0a9b9b28-0a9b9b28})
##### Tijdsperiode

Met de parameter **seconden** kunt u de tijdsperiode specificeren voor
aggregatie. De tijdsperiode kan alleen worden uitgedrukt als tijd, het bedrag
van waarden (voorafgegaan door **\#**) wordt niet ondersteund.

[Ondersteunde eenheidssymbolen](/manual/appendix/suffixes) kunnen hierin worden gebruikt
parameter voor het gemak, bijvoorbeeld '5m' (vijf minuten) in plaats van
'300s' (300 seconden) of '1d' (één dag) in plaats van '86400' (86400
seconden).

Tijdsperiode wordt genegeerd door de server als deze wordt doorgegeven met de *last\_foreach*
functie en kan dus worden weggelaten:

    last_foreach(/*/key?[group="hostgroep"])

Tijdsperiode wordt niet ondersteund met de functie *exists\_foreach*.

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

[comment]: # ({faa900ea-bf880e22})
##### Aanvullende parameters

Een derde optionele parameter wordt ondersteund door de *bucket\_rate\_foreach*
functie:

    bucket_rate_foreach(itemfilter,tijdsperiode,<parameternummer>)

waarbij <parameternummer> de positie is van de "bucket"-waarde in
de artikelsleutel. Als bijvoorbeeld de "bucket"-waarde in myItem\[aaa,0.2\] is
'0.2', dan is de positie 2.

De standaardwaarde van <parameternummer> is '1'.

[comment]: # ({/faa900ea-bf880e22})

[comment]: # ({fc23e115-22af7980})
#### Gedrag afhankelijk van beschikbaarheid

De onderstaande tabel illustreert hoe elke functie zich gedraagt in gevallen van beperkte beschikbaarheid van host/item en geschiedenisgegevens.

|Functie|Uitgeschakelde host|Niet-beschikbare host met gegevens|Niet-beschikbare host zonder gegevens|Uitgeschakeld item|Niet-ondersteund item|Fout bij gegevensopvraging (SQL)|
|--|--|--|--|--|--|--|
|*avg_foreach*|negeer|retourneer gemiddelde|negeer|negeer|negeer|negeer|
|*bucket_rate_foreach*|negeer|retourneer bucket rate|negeer|negeer|negeer|negeer|
|*count_foreach*|negeer|retourneer aantal|0|negeer|negeer|negeer|
|*exists_foreach*|negeer|1|1|negeer|1|nvt|
|*last_foreach*|negeer|retourneer laatste|negeer|negeer|negeer|negeer|
|*max_foreach*|negeer|retourneer max|negeer|negeer|negeer|negeer|
|*min_foreach*|negeer|retourneer min|negeer|negeer|negeer|negeer|
|*sum_foreach*|negeer|retourneer som|negeer|negeer|negeer|negeer|

Als het item wordt *genegeerd*, wordt er niets aan de aggregatie toegevoegd.

[comment]: # ({/fc23e115-22af7980})
