Co to je?
Poznámka pro administrátory: Tento průvodce vysvětluje, jak používat “Chytré nástroje” (funkce) k transformaci a analýze dat za běhu. Pokrývá věci jako výpočet DPH, extrahování let z dat nebo počítání položek v objednávce.
Pro koho je to určeno? Administrátoři by si to měli přečíst, aby pochopili, jak mohou provádět matematické a datové analýzy přímo ve svých vyhledáváních. Je to zvláště užitečné pro vytváření sestav. Vývojáři budou tyto funkce rozsáhle používat v automatizovaných pracovních postupech.
Klíčové výhody pro e-shop:
- Automatizovaná matematika: Filtrujte produkty na základě vypočítaných hodnot (jako je “cena s DPH”), aniž byste potřebovali samostatné pole v databázi.
- Časové přehledy: Snadno najděte objednávky z konkrétního roku, měsíce nebo dokonce hodiny dne.
- Souhrnné zprávy: Okamžitě počítejte, sčítejte nebo průměrujte data (např. “ukaž mi zákazníky s celkovou hodnotou objednávky nad 500 USD”).
- Čištění textu: Vyčistěte výsledky vyhledávání převodem jmen na malá písmena nebo oříznutím mezer navíc.
Funkce a agregace
Vestavěné funkce umožňují transformovat a analyzovat data přímo v podmínkách filtru.
[navigate:where-basics.md|Základní filtry|filter] [navigate:where-advanced.md|Rozšířené filtry|database]
Funkce pro datum a čas
Extrahujte specifické komponenty z polí data/času nebo vypočítejte hranice časových období.
Extrakční funkce
year(dateOfIssue) = 2023 and month(requestedDeliveryDate) = 12
[badge:Functions|secondary|right]
Čtvrtletí a týden
quarter(dateOfIssue) = 4 and dayofweek(dateOfIssue) = 1
[badge:Functions|secondary|right]
Funkce pro rozsah dat
Tyto funkce vrací přesné počáteční a koncové hranice pro časová období.
dateOfIssue >= startOfYear(now()) and dateOfIssue <= endOfMonth(now())
[badge:Functions|secondary|right]
Agregační funkce
Provádějte výpočty napříč MNOHA relacemi (one-to-many, many-to-many) pro výkonné analýzy.
Základní agregace
count(variants) >= 3 and sum(variants.priceWithVat) > 1000
[badge:Aggregation|secondary|right]
Filtrovaná agregace
Počítejte nebo vypočítávejte hodnoty pouze pro související záznamy, které odpovídají specifické podmínce.
count(variants[priceWithVat > 100]) > 2
[badge:Aggregation|secondary|right]
Průměr, minimum a maximum
avg(variants.priceWithVat) > 500 and min(variants.weight) > 1
[badge:Aggregation|secondary|right]
Aritmetické operátory
Provádějte matematické operace na číselných polích a hodnotách pomocí standardních pravidel priority (*, /, % před +, -).
Výpočty ceny a množství
priceWithVat * 1.21 > 100 and standardPrice - 5 > 10
[badge:Arithmetic|secondary|right]
Modulo a seskupování
actionPrice % 2 = 0 and (priceWithoutVat - purchasePriceWithoutVat) * 1.21 > 500
[badge:Arithmetic|secondary|right]
Řetězcové a matematické funkce
Textové transformace
lower(name) = "iphone" and length(description) > 50
[badge:Functions|secondary|right]
Vyhledávání a extrahování řetězců
indexof(email, "@") > 0 and substring(username, 0, 3) = "PRD"
[badge:Functions|secondary|right]
Matematické zaokrouhlování
round(priceWithVat) = 100 and floor(weight) = 4
[badge:Math|secondary|right]
Referenční tabulka
| Funkce | Kategorie | Popis | Příklad |
|---|---|---|---|
now() |
Speciální | Aktuální časové razítko | createdAt > now() |
me() |
Speciální | ID aktuálního uživatele | createdBy_id = me() |
count() |
Agregace | Počet souvisejících záznamů | count(variants) > 3 |
sum() |
Agregace | Součet číselného pole | sum(variants.priceWithVat) > 100 |
avg() |
Agregace | Průměr číselného pole | avg(variants.weight) > 4 |
min() |
Agregace | Minimální hodnota | min(variants.priceWithVat) > 10 |
max() |
Agregace | Maximální hodnota | max(variants.priceWithVat) < 100 |
year() |
Datum/Čas | Extrahování roku | year(createdAt) = 2023 |
month() |
Datum/Čas | Extrahování měsíce (1-12) | month(createdAt) = 12 |
day() |
Datum/Čas | Extrahování dne (1-31) | day(createdAt) = 25 |
hour() |
Čas | Extrahování hodiny (0-23) | hour(createdAt) = 14 |
round() |
Matematika | Zaokrouhlení na nejbližší celé číslo | round(priceWithVat) = 100 |
concat() |
Řetězec | Kombinování řetězců | concat(firstname, surname) = "JohnDoe" |
indexof() |
Řetězec | Nalezení pozice podřetězce | indexof(email, "@") > 0 |
trim() |
Řetězec | Odstranění mezer | trim(name) = "Product" |
isnull() |
Speciální | Kontrola, zda je hodnota null | isnull(ean) = true |
Reference rozsahu dat
| Období | Funkce začátku | Funkce konce |
|---|---|---|
| Rok | startOfYear(date) |
endOfYear(date) |
| Měsíc | startOfMonth(date) |
endOfMonth(date) |
| Den | startOfDay(date) |
endOfDay(date) |
| Hodina | startOfHour(date) |
endOfHour(date) |