Tato proměnná je nejsložitější a nejméně přehledná, protože v jedné templatě umožňuje řadu různých výpočtů s využitím co nejméně proměnných (kvůli omezením přehledového layoutu).
Nejprve obecné principy pro proměnné založené na této template:
- Na vstupu očekává pole objektů, typicky jde o produkty v rámci ecommerce, ale fungovat bude s jakýmkoli polem objektů.
-
Proměnná přidává parametry případně je přepisuje, ale žádné neodstraňuje. Všechny původní parametry tedy zůstávají součástí jen se přidávají další / upravují.
-
Většina polí (y, y1, x1, x2) očekávají na vstupu jméno parametru (id, name, variant, atp.). V případě vnořených parametrů lze využít tečkovou notaci (list.name, variant.color, atp.) a to jak u vstupních, tak u výstupního parametru. Script si s vnořenými parametry poradí při čtení i při zápisu.
-
Je možné přepsat hodnotu existujícího parametru tím, že jako New Parameter Name (y) uvedete existující parametr. Je třeba zvážit, kdy přepsání parametru situaci usnadní a kdy znepřehlední.
-
Nápočty se provádějí postupně od prvního po poslední a každý nápočet má k dispozici výsledky předchozího nápočtu. Je tedy možné napočítat parametr “x” a ten použít následně ve stejné proměnné k napočítání parametru “xx”. Díky tomu je možné všechny úpravy udělat v jedné proměnné. Také je možné úpravy řetězit (např. funkce “minimum” dělá minimum ze 3 parametrů, pokud potřebujete minimum z pěti, můžete minimum zavolat dvakrát po sobě - udělat minimum z prvních 3 a to pak porovnat se čtvrtým a pátým parametrem).
-
Template si neklade za cíl být úplnou. Pokud neobsahuje funkci, kterou hledáte, přidejte si ji (postup najdete dále).
A nyní jednotlivé funkce:
1. Cross Multiplication
2. Percentage reduction
3. Difference
4. Round
5. Concatenation
6. Minimum
7. Maximum
8. Trim
9. Trim splitted
10. Conditional
11. Přidávání dalších funkcí
Cross Multiplication
Jde o jednoduchou trojčlenku. y = y1 * x2/x1
Zjistí v jakém poměru jsou 2 proměnné (x2, x1) a tímto poměrem přenásobí vybranou hodnotu. Výsledek zaokrouhlí na dvě desetinná místa
Příklad použití: Máte cenu před slevou s daní a bez daně a cenu po slevě s daní a chcete spočítat cenu po slevě bez daně. Různé produkty mají různou sazbu DPH, musíte si tedy DPH spočítat z uvedených cen a následně jej aplikovat.
y = cena po slevě bez daně
y1 = cena po slevě s daní
x1 = cena před slevou s daní
x2 = cena před slevou bez daně.
Percentage reduction
Spočítá, o kolik procent se dvě čísla liší. y = (x1 - x2) / x1
Výsledek zaokrouhlí na dvě desetinná místa.
Příklad použití: Máte cenu před slevou a po slevě a zájímá vás procentuální výše slevy.
y = procentuální výše slevy
x1 = cena před slevou
x2 = cena po slevě
Difference
Jednoduchý rozdíl dvou čísel: y = x1 - x2
Výsledek zaokrouhlí na dvě desetinná místa.
Příklad použití: Chcete spočítat absolutní výši slevy.
y = absolutní výše slevy
x1 = cena před slevou
x2 = cena po slevě
Round
Zaokrouhlí číslo na 2 desetinná místa. y = round(x1)
Příklad použití: V datové vrstvě máte od vývojářů částky typu priceWithoutVat: 122.12312
y = zaohrouhlené číslo
x1 = číslo před zaokrouhlením
Concatenation
Spojí dva řetězce v jeden s použitím zvoleného oddělovače. y = x1 + z + x2
Vstupní parametry nejprve převede na řetězce, takže ke spojení (a nikoli součtu) dojde i v případě, že vstupem jsou čísla. Proměnná z (Separator) není název parametru, zapisujete přímo řetezec, který chcete použít jako oddělovač. V případě vynechání na sebe spojené hodnoty přímo navazují.
Příklad použití: Máte velikost a barvu jako dva samostatné parametry a chcete je posílat do parametru variant oddělené pomlčkou.
y = varianta typu “42-oktarínová”
x1 = velikost
x2 = barva
z = pomlčka (-)
Minimum
Vybere nejmenší z až 3 čísel. y = min(y1, x1, x2)
V případě, že nedostane žádné číslo, tak vrací hodnotu 0. Pokud některý parametr chybí, je ignorován.
Příklad využití: V datové vrstvě máte vždy uvedenou cenu bez slevy, ale v případě slevy přibude parametr cena se slevou, který se jindy nevyskytuje. Vezmete tedy menší z hodnot cena beze slevy, cena se slevou.
y = cena nabídnutá zákazníkovi
y1 = cena beze slevy
x1 = cena se slevou
x2 = (prázdné)
Maximum
Vybere nejvyšší z až 3 čísel. y = max(y1, x1, x2)
V případě, že nedostane žádné číslo, tak vrací hodnotu 0. Pokud parametr chybí, je ignorován.
Příklad využití: Máte v datové vrstvě parametry s různými slevami, na které má uživatel nárok (akční sleva, věrnostní sleva, množstevní sleva), ale ve výsledku se aplikuje jen jedna, ta nejvyšší.
y = sleva nabídnutá zákazníkovi
y1 = akční sleva
x1 = věrnostní sleva
x2 = množstevní sleva
Trim
Očistí řetězec o bílé znaky. y = trim(x1)
Konkrétně odstraní bílé znaky na konci a na začátku řetězce. V případě, že v řetězci jsou použité dvojité (či vícenásobné) mezery, tak je nahradí jednoduchou mezerou.
Příklad využití: V názvech produktů jsou někdy na konci mezery navíc a někdy ne, takže pak v reportech dochází k rozpadu jednoho produktu do více řádků. Např. “Můj produkt “ vs. “Můj produkt”
y = očištěný název
x1 = původní název
Trim splitted
Rozpadne řetězec podle zvoleného znaku a očistí jednotlivé části o bílé znaky na konci a na začátku. y = join(trim(split(x1,z)),z)
Po očištění zase řetězec spojí pomocí stejného oddělovače, podle kterého jej rozpadl. Tento oddělovač (z) není názvem parametru, ale píšete přímo jeho hodnotu.
Příklad použití: V datové vrstvě máte parametr category s kategoriemi oddělenými lomítky. Někdy ale kategorie obsahují na konci mezeru a jindy ne, což vám rozbíjí reporting.
y = očištěné kategorie oddělené lomítky
x1 = původní kategorie s mezerami navíc, oddělené lomítky
z = lomítko (/)
Conditional
Ověří podmínku, je-li splněna, vezme jednu hodnotu, pokud ne, vezme alternativní hodnotu. if (y1 = e) then y = x1 else y = x2
(pro fanoušky javascriptu a ternárních operátorů: y = (y1 == e) ? x1 : x2)
Ověřovaná hodnota (e) je přímo hodnota, nikoli název parametru. Oproti této hodnotě se ale ověřuje parametr a výsledná hodnota se opět bere z parametrů daného itemu. Pokud chcete udělat něco jako lookup table (tj. více různých hodnot), můžete tento nápočet zřetězit (viz příklad).
Příklad použití: Do parametru variant chcete pro kabelky posílat barvu, pro náušnice materiál a pro kabáty (a vše ostatní) velikost. V datové vrstvě máte každý parametr samostatně, informaci o typu produktu máte v kategorii.
První nápočet:
y = výsledná varianta (barva nebo velikost dle typu produktu)
y1 = kategorie
e = kategorie kabelek (kabelky)
x1 = barva
x2 = velikost
Druhý nápočet:
y = výsledná varianta (materiál nebo (barva nebo velikost) dle typu produktu)
y1 = kategorie
e = kategorie náušnic (náušnice)
x1 = materiál
x2 = výsledná varianta
Ano, ve druhém nápočtu vstupuje výsledek z prvního nápočtu a ten se následně aktualizuje (buď přepíše, nebo zachová). y a x2 jsou stejný parametr. První nápočet dá kabelkám barvu a všemu ostatnímu velikost, druhý nápočet u náušnic změní hodnotu (velikost) na materiál, u ostatních kategorií nic nemění. Kabelkám tak zůstane barva a kabátům velikost.
Přidávání dalších funkcí
Pro přidání dalších funkcí je třeba znalost GTM template a javascriptu, nicméně template je na to připravená. Ideálně zkuste vyjít s existujícími sloupci (y, y1, e, x1, x2, z), už takto je přehled použitých vzorců lehce nepřehledný a navíc byste museli provést další úpravy kódu. 🙂 Proměnná y je vždy pro výsledek, y1, x1 a x2 jsou názvy parametrů, e a z jsou nezávislé hodnoty, které vyplňujete explicitně (či použitím proměnné, ale nejde o parametry produktů). Přidání nové funkce probíhá v následujících krocích:
1. V sekci Fields přidejte do formulas -> formulaType název vaší funkce a jemu přiřazenou hodnotu pro javascriptovou proměnnou.
2. Přidejte nový label s popiskem funkce. V nastaveních labelu vyberte “Enabling condition” a přidejte podmínku, aby se zobrazil jen při výběru vaší nové funkce.
3. Ve formulas projděte všechny parametry, které budete potřebovat a doplňte do jejich podmínek pro zobrazení název vaší funkce.
4. V sekci Code podsekci “Define calculations” doplňte funkci, která z požadovaných hodnot počítá, co potřebujete. Pracujte s názvy proměnných y1, e, x1, x2, z, příkaz return přiřazuje automaticky do proměnné y. O načtení hodnot z formuláře, o iteraci po itemech a o načítání (a zapisování) vnořených parametrů se starají části, které nemusíte upravovat (pokud nepotřebujete ošetřit nějakou situaci, kterou jsme my neřešili).
5. V podsekci Execution do switche přidejte vaši funkci. “Case” je název z Fields -> formulas -> formulaType, parametry funkce calculate jsou:
- Název Vaší funkce z předchozí bodu
-
source (neměňte)
-
y (neměňte)
-
Pole s použitými parametry (y1, x1, x2), vyplňte jen ty, které používá vaše funkce
-
V případě potřeby přidejte parametry e a / nebo z
-
Doporučuji přidat Váš case do Testů a ověřit si, že výsledek dopadne dle očekávání.
-
Profit