Funkcje foreach są używane w obliczeniach agregujących, aby zwrócić jedną zagregowaną wartość dla każdej pozycji wybranej przez użyty filtr pozycji. Zwracana jest tablica wartości.
Na przykład funkcja avg_foreach zwróci tablicę wartości, gdzie każda wartość to średnia wartość historii wybranej pozycji, w określonym przedziale czasowym.
Filtr pozycji jest częścią składni używanej przez funkcje foreach. Użycie symboli wildcard jest obsługiwane w filtrze pozycji, dzięki czemu wymagane pozycje mogą być wybierane dość elastycznie.
Funkcja | Opis |
---|---|
avg_foreach | Zwraca średnią wartość dla każdej pozycji. |
bucket_rate_foreach | Zwraca pary (górna granica przedziału, wartość współczynnika) odpowiednie do użycia w funkcji histogram_quantile(), gdzie "górna granica przedziału" to wartość parametru klucza pozycji zdefiniowanego przez parametr <parameter number>. |
count_foreach | Zwraca liczbę wartości dla każdej pozycji. |
exists_foreach | Zwraca '1' dla każdej włączonej pozycji. |
last_foreach | Zwraca ostatnią wartość dla każdej pozycji. |
max_foreach | Zwraca maksymalną wartość dla każdej pozycji. |
min_foreach | Zwraca minimalną wartość dla każdej pozycji. |
sum_foreach | Zwraca sumę wartości dla każdej pozycji. |
Funkcje foreach obsługują dwa wspólne parametry: item filter
(szczegóły poniżej) i time period
:
Na przykład:
avg_foreach(/*/mysql.qps?[group="MySQL Servers"],5m)
zwróci pięciominutową średnią każdej pozycji 'mysql.qps' w grupie serwerów MySQL.
Zauważ, że niektóre funkcje obsługują dodatkowe parametry.
Filtr pozycji:
składa się z czterech części, gdzie:
Spacje są dozwolone tylko wewnątrz wyrażenia warunków.
Użycie symboli wildcard
/host/*
i /*/klucz
są poprawnymi filtrami, ale /*/*
jest nieprawidłowe.key[a,*,*]
).Wyrażenie warunków
Wyrażenie warunków obsługuje:
"<tekst>"
- stała ciągu znaków, ze znakiem ucieczki \
do ucieczki "
i \
=
, <>
and
, or
, not
(
)
Użycie cudzysłowia dla stałych ciągów znaków jest obowiązkowe. Obsługiwane jest tylko pełne porównanie ciągów znaków z uwzględnieniem wielkości liter.
Przy określaniu znaczników w filtrze (tj. tag="tagname:value"
), dwukropek ":" jest używany jako separator. Wszystko po nim traktowane jest jako wartość znacznika. Dlatego obecnie nie jest obsługiwane określanie nazwy znacznika zawierającej ":" w sobie.
Przykłady
Może być używany złożony filtr, odnoszący się do klucza pozycji, grupy hostów i znaczników, jak ilustrują przykłady:
Przykład składni | Opis |
---|---|
/host/key[abc,*] |
Pasuje do podobnych pozycji na tym hoście. |
/*/key |
Pasuje do tej samej pozycji na dowolnym hoście. |
/*/key?[group="ABC" and tag="tagname:value"] |
Pasuje do tej samej pozycji na dowolnym hoście z grupy ABC mających znaczniki 'tagname:value'. |
/*/key[a,*,c]?[(group="ABC" and tag="Tag1") or (group="DEF" and (tag="Tag2" or tag="Tag3:value"))] |
Pasuje do podobnych pozycji na dowolnym hoście z grupy ABC lub DEF z odpowiednimi znacznikami. |
Wszystkie pozycje, do których istnieją odniesienia, muszą istnieć i zbierać dane. Tylko włączone pozycje na włączonych hostach są uwzględniane w obliczeniach.
Jeśli klucz pozycji odwołanej pozycji zostanie zmieniony, filtr musi być aktualizowany ręcznie.
Określenie grupy nadrzędnej hosta obejmuje grupę nadrzędną oraz wszystkie zagnieżdżone grupy hostów wraz z ich pozycjami.
Drugi parametr pozwala określić okres czasu dla agregacji. Okres czasu może być wyrażony tylko jako czas, ilość wartości (poprzedzonych #) nie jest obsługiwana.
Wspierane symbole jednostek mogą być używane w tym parametrze dla wygody, na przykład '5m' (pięć minut) zamiast '300s' (300 sekund) lub '1d' (jeden dzień) zamiast '86400' (86400 sekund).
Okres czasu jest ignorowany przez serwer, jeśli jest przekazany z funkcją last_foreach i może zostać pominięty:
Okres czasu nie jest obsługiwany w funkcji exists_foreach.
Trzeci opcjonalny parametr jest obsługiwany przez funkcję bucket_rate_foreach:
gdzie <parameter number> to pozycja wartości "przedziału" w kluczu pozycji. Na przykład, jeśli wartość "przedziału" w myItem[aaa,0.2] to '0.2', to jej pozycją jest 2.
Domyślną wartością <parameter number> jest '1'.
Zobacz obliczenia agregujące po więcej szczegółów i przykłady dotyczące używania funkcji foreach.
Następująca tabela przedstawia, w jaki sposób każda funkcja zachowuje się w przypadkach ograniczonej dostępności hosta/pozycji oraz danych historycznych.
Funkcja | Wyłączony host | Niedostępny host z danymi | Niedostępny host bez danych | Wyłączona pozycja | Niewspierana pozycja | Błąd pobierania danych (SQL) |
---|---|---|---|---|---|---|
avg_foreach | ignoruj | zwróć średnią | ignoruj | ignoruj | ignoruj | ignoruj |
bucket_rate_foreach | ignoruj | zwróć wartość przedziału | ignoruj | ignoruj | ignoruj | ignoruj |
count_foreach | ignoruj | zwróć liczbę | 0 | ignoruj | ignoruj | ignoruj |
exists_foreach | ignoruj | 1 | 1 | ignoruj | 1 | n/d |
last_foreach | ignoruj | zwróć ostatnią | ignoruj | ignoruj | ignoruj | ignoruj |
max_foreach | ignoruj | zwróć maksimum | ignoruj | ignoruj | ignoruj | ignoruj |
min_foreach | ignoruj | zwróć minimum | ignoruj | ignoruj | ignoruj | ignoruj |
sum_foreach | ignoruj | zwróć sumę | ignoruj | ignoruj | ignoruj | ignoruj |
Jeśli pozycja jest ignorowana, nic nie jest dodawane do agregacji.