Čo je to?
Poznámka pre administrátora: Toto je systém používaný na jednorazové vloženie veľkého množstva dát do vášho e-shopu. Najčastejšie sa používa na počiatočné nastavenie, aktualizáciu cien pre tisíce produktov alebo synchronizáciu zásob s externým skladom.
Pre koho je to určené? Administrátori by si to mali prečítať, aby pochopili možnosti platformy pre hromadné spracovanie dát, ako sú automatické výpočty cien alebo podpora viacerých jazykov. Vytváranie samotných súborov a nastavenie technického pripojenia je však úlohou pre vývojárov alebo dátových špecialistov.
Kľúčové výhody pre e-shop:
- Obrovská úspora času: Aktualizujte tisíce produktov, cien alebo stavov zásob v priebehu sekúnd namiesto manuálneho zadávania.
- Inteligentné výpočty: Automaticky vypočítajte konečné ceny (napríklad s DPH) alebo generujte popisy produktov počas procesu importu.
- Bezpečné a spoľahlivé: Systém kontroluje vaše dáta na chyby pred uložením, čím zaisťuje, že váš e-shop zostane presný a profesionálny.
- Pripravené na viacero jazykov: Jednoducho importujte preklady pre všetky podporované jazyky v jednom kroku.
Importný systém
Mechanizmy importu dát, formáty a validačné pravidlá
Prehľad
Trieda Importer spracováva dáta vo formáte JSON alebo stream, pričom spracúva entity, polia, vzťahy a rôzne možnosti importu. Importované dáta sú štruktúrované ako objekt, kde každý kľúč je názov entity (napr. produkty, používatelia) a hodnota je pole položiek na import pre túto entitu.
Kľúčové funkcie
Štruktúra založená na entitách Dáta organizované podľa typov entít s flexibilnými operáciami a mapovaním polí
Podpora výrazov Dynamické výpočty, interpolácia premenných a komplexné transformácie
Atomické operácie Importy typu všetko alebo nič s komplexným spracovaním chýb a vrátením zmien
Kompletný príklad importu
{
"@atomic": "batch",
"@requireChangeSet": true,
"products": [
{
"@operation": "upsert",
"code": "WIDGET-001",
"name": "Smart Widget",
"basePrice": 100,
"vatRate": 0.21,
"price": { "e": "${basePrice} * (1 + ${vatRate})" },
"category": { "e": "code:${categoryCode}" },
"categoryCode": "ELECTRONICS",
"description": { "e": "${name} - Premium quality widget" },
"validFrom": "today",
"validTo": { "e": "${validFrom} + 1y" },
"attributes": [
{
"key": "weight",
"value": { "e": "${baseWeight} + 0.1" },
"baseWeight": 2.5
}
],
"@action": "sync"
}
],
"categories": [
{
"@operation": "update",
"@where": "status = 'active'",
"status": "archived",
"archivedAt": "now()"
}
]
}
Tento príklad demonštruje:
- Import s atomicitou ‘Batch’ so sledovaním sady zmien
- Dynamický výpočet cien pomocou výrazov
- Vyhľadávanie kategórií s premennými
- Interpolácia reťazcov pre popisy
- Dátumová aritmetika pre doby platnosti
- Vnorené výrazy vo viacnásobných vzťahoch
- Hromadné operácie s podmienkami @where
- Vykonanie akcie servera po importe
Podporované typy polí
Reťazec
Textové hodnoty s podporou výrazov
Príklady:
"name": "Widget"
"description": { "e": "Hello ${world}" }
Funkcie:
- Priame reťazcové hodnoty
- Výrazy premenných
- Šablónovanie
Číslo/Celé číslo
Číselné hodnoty s podporou kalkulačky
Príklady:
"price": 123.45
"amount": "100+200"
"discount": "3.5%"
"total": { "e": "${price} * 1.21" }
Funkcie:
- Aritmetické operácie
- Percentá
- Funkcie (abs, sqrt, atď.)
- Interpolácia premenných
Booleovská hodnota
Hodnoty true/false s viacerými formátmi
Príklady:
"active": true
"enabled": "yes"
"visible": "ano"
Funkcie:
- Podpora viacerých jazykov
- Rôzne formáty (1/0, áno/nie)
- Nerozlišujúce veľkosť písmen
Dátum/Dátum a čas
Dátumové hodnoty s podporou aritmetiky
Príklady:
"date": "2024-06-26"
"date": "1.1.2025"
"dueDate": { "e": "${createdDate} + 30d" }
"validTo": "today + 1y"
Funkcie:
- Viacero formátov
- Relatívne výrazy
- Dátumová aritmetika
- České/európske formáty
Výpočet
Vymenované hodnoty s lokalizáciou
Príklady:
"status": "active"
"priority": "Vysoká"
Funkcie:
- Kľúč alebo lokalizovaný názov
- Nerozlišujúce veľkosť písmen
- Podpora aliasov
Preložiteľné
Viacjazyčné polia s tromi režimami prevádzky a kontrolou prekladov
Príklady:
"name": "Value" (merge mode)
"name": {"en": "English", "cs": "Czech"} (replace mode)
"name": [{"language": "en", "value": "English"}] (array mode)
"name@removeAll": false (preserve other translations)
Funkcie:
- Aktualizácia špecifická pre jazyk (zlúčenie)
- Asociatívne pole (nahradiť)
- Formát poľa (nahradiť)
- Ovládanie @removeAll
- Podpora direktívy @language
Binárne/Blob
Binárne dáta s viacerými formátmi kódovania
Príklady:
"content": { "base64": "SGVsbG8gV29ybGQ=" }
"content": { "hex": "48656c6c6f20576f726c64" }
"content": { "gzip-base64": "H4sIAAAAAAAA..." }
"content": "SGVsbG8=", "content@encoding": "base64"
Funkcie:
- Kódovanie Base64
- Hexadecimálne kódovanie
- Kompresia Gzip
- Podpora prípony kódovania
- Formáty objektov a reťazcov
Operácie importu
@operation: create
Vždy vytvoriť nový záznam
Príklad:
{ "@operation": "create", "name": "New Product" }
@operation: update
Aktualizovať existujúci záznam (vyžaduje primárny kľúč)
Príklad:
{ "@operation": "update", "id": 123, "name": "Updated Product" }
@operation: upsert
Vytvoriť, ak sa nenájde, inak aktualizovať (predvolené)
Príklad:
{ "@operation": "upsert", "code": "ABC", "name": "Product ABC" }
@operation: delete
Odstrániť zadaný záznam (záznamy)
Príklad:
{ "@operation": "delete", "id": 123 }
Kontrola správania Upsert (@update a @create)
Tieto direktívy poskytujú podrobnú kontrolu nad správaním upsertu tým, že určujú, čo sa má stať, keď záznam existuje (@update) alebo neexistuje (@create). Zvyčajne sa používajú s @operation: “upsert”.
@update
Kontroluje, čo sa stane, keď záznam už existuje počas operácie upsert.
Hodnoty:
ok- Aktualizovať existujúci záznam (predvolené)ignore- Preskočiť aktualizáciu, ponechať nezmenenéfail- Vyvolať chybu, ak záznam existuje
@create
Riadi, čo sa stane, keď záznam neexistuje počas operácie upsert.
Hodnoty:
ok- Vytvorí nový záznam (predvolené)ignore- Preskočí vytvorenie, žiadny nový záznamfail- Vyvolá chybu, ak záznam neexistuje
Príklady
Preskočiť aktualizácie pre existujúce záznamy
{
"products": [
{
"@operation": "upsert",
"@update": "ignore",
"code": "EXISTING-PRODUCT",
"name": "Updated Name"
}
]
}
Ak produkt s kódom “EXISTING-PRODUCT” už existuje, bude preskočený (nebude aktualizovaný).
Zabrániť vytváraniu nových záznamov
{
"users": [
{
"@operation": "upsert",
"@create": "fail",
"email": "user@example.com",
"status": "active"
}
]
}
Ak neexistuje žiadny používateľ s daným e-mailom, import zlyhá s chybou namiesto vytvorenia nového používateľa.
Vytvárať iba nové záznamy
{
"categories": [
{
"@operation": "upsert",
"@update": "fail",
"@create": "ok",
"code": "NEW-CATEGORY",
"name": "New Category"
}
]
}
Toto vytvorí kategóriu, ak neexistuje, ale zlyhá, ak už existuje (čím sa zabezpečí, že sa vytvoria iba nové kategórie).
Kľúčové body
- Predvolené správanie je “ok” pre @update aj @create
- Tieto direktívy fungujú iba s @operation: “upsert”
- “ignore” ticho preskočí operáciu
- “fail” vyvolá chybu a môže narušiť atomické importy
- Užitočné pre synchronizáciu dát a zabránenie prepísaniu
Transakčné režimy (@atomic)
Direktíva @atomic riadi transakčné správanie a stratégiu spracovania chýb počas importu. Vyberte vhodný režim na základe veľkosti vašich dát, tolerancie chýb a požiadaviek na výkon.
@atomic: true (Predvolené)
Všetky importy sú atomické – buď sa celý súbor potvrdí, alebo žiadny. Najbezpečnejšie, ale môže byť pomalšie pre veľké importy.
Charakteristiky:
- ✓ Všetko alebo nič – Kompletná integrita transakcie
- ✓ Vrátenie zmien pri chybe – Akákoľvek chyba zruší všetky zmeny
- ⚠ Obmedzené chyby – Maximálne 100 nahlásených chýb
@atomic: false
Každý prvok sa importuje nezávisle. Čiastočné importy sú možné – niektoré záznamy môžu byť úspešné, zatiaľ čo iné zlyhajú.
Charakteristiky:
- ✓ Nezávislé záznamy – Každý záznam vo vlastnej transakcii
- ✓ Čiastočný úspech – Importujte čo najviac dát
- ⚠ Izolácia chýb – Chyby neovplyvňujú iné záznamy
@atomic: “batch” (Odporúčané)
Najrýchlejší a najefektívnejší režim. Importy sa spracúvajú v dávkach pre optimálny výkon pri zachovaní primeranej izolácie chýb.
Charakteristiky:
- 🚀 Vysoký výkon – Optimalizované pre veľké súbory dát
- ⚖️ Vyvážený prístup – Výkon s izoláciou chýb
- 📦 Vrátenie dávky – Neúspešná dávka neovplyvňuje ostatné
Príklady
Prísny import všetko alebo nič
{
"@atomic": true,
"products": [
{ "code": "P001", "name": "Product 1" },
{ "code": "P002", "name": "Product 2" },
{ "code": "INVALID", "name": "" }
]
}
Ak ktorýkoľvek produkt zlyhá pri validácii, žiadny z produktov nebude importovaný. Všetky zmeny sa vrátia späť.
Importovať jednotlivé záznamy
{
"@atomic": false,
"products": [
{ "code": "P001", "name": "Product 1" },
{ "code": "P002", "name": "Product 2" },
{ "code": "INVALID", "name": "" }
]
}
Platné produkty (P001, P002) budú úspešne importované, zatiaľ čo neplatný bude preskočený so správou o chybe.
Optimalizované dávkové spracovanie
{
"@atomic": "batch",
"products": [
{ "code": "P001", "name": "Product 1" },
{ "code": "P002", "name": "Product 2" },
{ "code": "P003", "name": "Product 3" }
]
}
Produkty sa spracúvajú v optimalizovaných dávkach. Ak jedna dávka zlyhá, ostatné dávky môžu byť stále úspešné, čo poskytuje najlepšiu rovnováhu výkonu a spoľahlivosti.
Výber správneho režimu
- Použite true pre kritické dáta, kde akákoľvek chyba by mala zastaviť import
- Použite false pre importy s najlepším úsilím, kde je čiastočný úspech prijateľný
- Použite “batch” pre veľké súbory dát vyžadujúce optimálny výkon
- Predvolené je true pre maximálnu integritu dát
- Zvážte svoju stratégiu spracovania chýb a požiadavky na výkon
Veľkosť dávky (@batchSize)
Direktíva @batchSize prepíše počet položiek spracovaných v jednej databázovej transakcii. Predvolená hodnota je 50; maximálna povolená hodnota je 1000 (vyššie hodnoty sú ticho obmedzené, aby sa predišlo chybám nedostatku pamäte). Nulové a záporné hodnoty sú odmietnuté s chybou.
Táto direktíva nemá žiadny účinok, ak sa použije @atomic: false, pretože každá položka je vždy zabalená vo vlastnej individuálnej transakcii.
Príklad
{
"@atomic": "batch",
"@batchSize": 200,
"products": [
{ "code": "P001", "name": "Product 1" },
{ "code": "P002", "name": "Product 2" }
]
}
Produkty budú potvrdené po 200 naraz v rámci jednej transakcie.
Kedy upraviť predvolené nastavenie
- Zvýšte (napr. 200 – 500) pri importe jednoduchých, plochých entít bez vnorených vzťahov na zlepšenie priepustnosti
- Znížte (napr. 10 – 20) pri importe entít s mnohými vzťahmi MANY alebo náročnými automatizáciami na zníženie zaťaženia pamäte
- Predvolená hodnota 50 je dobrá rovnováha pre väčšinu prípadov použitia
Spustenie automatizácie (@automation)
Spustite preddefinované automatizácie na aplikovanie komplexných transformácií a obchodnej logiky počas importu
Direktíva @automation umožňuje vykonávať preddefinované automatizácie na importovaných záznamoch. To vám umožňuje aplikovať komplexné transformácie, výpočty alebo obchodnú logiku, ktorá je definovaná v entitách automatizácie.
Ako to funguje
- Výber záznamu – Záznamy sa vyberajú pomocou @where alebo sa identifikujú podľa ID
- Vyhľadanie automatizácie – Automatizácia sa načíta podľa jej ID alebo vyhľadávacieho kľúča (
code:) - Vykonanie skriptu – Skript importu automatizácie sa analyzuje a aplikuje na každý zodpovedajúci záznam
- Aktualizácie polí – Zmeny definované v automatizácii sa aplikujú na záznam
- Uložiť – Aktualizovaný záznam sa uloží do databázy
Príklady
Základné vykonanie automatizácie
{
"products": [
{
"@where": "price < 100",
"@automation": "code:price-calculation-automation"
}
]
}
Vykonajte automatizáciu na všetkých produktoch, kde je cena nižšia ako 100.
Automatizácia výpočtu ceny
Krok 1: Vytvorte automatizáciu
{
"automations": [
{
"@operation": "create",
"name": "Apply Standard Markup",
"code": "price-calculation-automation",
"type": "massUpdate",
"importScript": "{\"products\":[{\"price\":{\"e\":\"${cost} * 1.3\"}}]}"
}
]
}
Krok 2: Použite automatizáciu
{
"products": [
{
"@where": "category = 'electronics'",
"@automation": "Apply Standard Markup"
}
]
}
Podmienené aktualizácie polí
{
"automations": [
{
"name": "Low Stock Alert",
"type": "massUpdate",
"importScript": "{\"products\":[{\"@where\":\"quantity < 10\",\"status\":\"low-stock\",\"alertSent\":true}]}"
}
]
}
// Apply to products
{
"products": [
{
"@where": "quantity < 10",
"@automation": "Low Stock Alert"
}
]
}
Automatizácia obsahuje vlastnú podmienku @where na dvojitú kontrolu kritérií.
Kombinovanie s inými direktívami
{
"products": [
{
"@where": "status = 'pending'",
"@automation": "code:calculate-totals",
"@action": "approve"
}
]
}
Poradie vykonania: 1) Záznam nájdený, 2) Automatizácia vykonaná, 3) Akcia servera vyvolaná.
Osvedčené postupy
- Používajte popisné názvy: Automatizácie pomenujte jasne, aby ste naznačili ich účel
- Dôkladne testujte: Testujte na vzorových dátach pred nasadením do produkcie
- Vyhnite sa samo-referenciám: Nikdy nevytvárajte automatizácie, ktoré odkazujú samé na seba
- Používajte podmienky @where: Zabezpečte, aby sa automatizácie vzťahovali len na príslušné záznamy
- Monitorujte hĺbku: Udržujte plytké vnorenie automatizácie (max. 5 úrovní)
- Dokumentujte logiku: Dokumentujte komplexnú logiku automatizácie
Riešenie problémov
Automatizácia sa nevykonáva
- Overte, či je ID automatizácie/vyhľadávací kľúč správny
- Skontrolujte, či je typ automatizácie massUpdate alebo aiMassUpdate
- Uistite sa, že automatizácia nie je zakázaná
- Overte, či je pole importScript platný JSON
Chyba prekročenia hĺbky automatizácie
- Skontrolujte kruhové referencie automatizácie
- Znížte úroveň vnorenia automatizácie
- Skontrolujte reťazec automatizácie na prítomnosť slučiek
Zmeny neboli použité
- Overte, či podmienka @where v importScript zodpovedá záznamu
- Skontrolujte, či sú názvy polí v skripte automatizácie správne
- Uistite sa, že importScript je správne naformátovaný
Vzťahy a vyhľadávania
Podľa primárneho kľúča
Odkazujte pomocou primárneho kľúča súvisiacej entity
"category": 123
Podľa vyhľadávania
Odkazujte pomocou typu a hodnoty vyhľadávania
"category": "code:ELECTRONICS"
Podľa externého ID (ext:)
Odkazujte pomocou externých identifikátorov uložených v extIds (podporuje dvojbodky v hodnote). Externé ID sú definované ako páry kľúč-hodnota v poli extIds entity, čo umožňuje flexibilné odkazovanie bez spoliehania sa na interné ID. Odporúčame použiť predponu ako ext:SYSTEM:, aby sa predišlo konfliktom s inými integráciami.
"category": "ext:SYSTEM:CATEGORY:123"
Používanie výrazov
Dynamické vyhľadávanie pomocou premenných
"category": { "e": "code:${categoryCode}" }
Vytvoriť s dodatočnými poľami
Automatické vytvorenie súvisiacej entity s viacerými poľami pomocou @create-as
"category_id": "code:ELEC",
"category_id@if-not-found": "create",
"category_id@create-as": {
"name": "Electronics",
"code": "ELEC"
}
Viaceré hodnoty
Vyskúšajte viacero metód rozlíšenia
"category": [123, "code:FALLBACK"]
Viacnásobné vzťahy
Polia vzťahov jeden k mnohým
"items": [
{ "name": "Item 1", "quantity": 10 },
{ "name": "Item 2", "quantity": 5 }
]
Špeciálne prípony polí
@atomic
Riadi správanie transakcií a stratégiu spracovania chýb
Hodnoty:
true(všetko alebo nič)false(nezávislé záznamy)batch(dávkové spracovanie)
@operation
Riadi akciu pre položku
Hodnoty:
createupdateupsertdelete
@where
Definuje podmienky pre hromadné operácie
Hodnoty:
- Formát objektu
- Formát výrazu
@m
Určuje autora/zdroj zmeny
Hodnoty:
api/ahuman/user/udefault/dimport/iai
@if-not-found
Riadi správanie, ak vyhľadávanie zlyhá
Hodnoty:
failnullcreateskip
@create-as
Určuje dodatočné polia pri vytváraní súvisiacej entity s @if-not-found=create
Hodnoty:
- Objekt s názvami a hodnotami polí
@action
Vyvolá akciu servera na importovanom zázname
Hodnoty:
mergesync- vlastné akcie
@automation
Vykoná preddefinovanú automatizáciu na importovanom zázname
Hodnoty:
- ID automatizácie
- názov/vyhľadávanie automatizácie
@batchSize
Nastavuje počet položiek spracovaných v jednej transakcii (predvolené: 50, maximum: 1000)
Hodnoty:
- Kladné celé číslo (1–1000)
@requireChangeSet
Vyžaduje, aby sa zmeny sledovali v rámci sady zmien
Hodnoty:
truefalse
@removeAll
Odstráni všetky existujúce súvisiace položky, ktoré nie sú v importe
Hodnoty:
truefalse
@update
Riadi správanie, keď záznam existuje počas upsertu
Hodnoty:
okignorefail
@create
Riadi správanie, keď záznam neexistuje počas upsertu
Hodnoty:
okignorefail
Reťazcové výrazy
Výkonný šablónovací jazyk pre dynamické generovanie reťazcov s premennými, funkciami a podmienenou logikou
Základná interpolácia premenných
Použite syntax ${variableName} na vloženie hodnôt premenných. Premenné sa riešia z aktuálneho kontextu importu.
Príklady:
"name": "Hello ${firstName}!" → "Hello John!"
"description": "${brand} - ${model}" → "Apple - iPhone"
"fullName": "${UPPER(firstName)} ${lastName}" → "JOHN Doe"
Reťazcové funkcie
Manipulácia s textom
UPPER(text)– Prevod na veľké písmenáLOWER(text)– Prevod na malé písmenáTRIM(text)– Odstránenie medzier z oboch koncovLTRIM(text)– Odstránenie medzier z ľavého koncaRTRIM(text)– Odstránenie medzier z pravého koncaUPPERFIRST(text)– Kapitalizácia prvého písmenaREPLACE(text, search, replacement)– Nahradenie textuSUBSTR(text, start, length)– Extrakcia podreťazca
Informácie a nástroje pre reťazce
LEN(text)– Získanie dĺžky reťazcaSTRIPHTML(html)– Odstránenie HTML značiekADDSLASHES(text)– Únikové úvodzovkyXMLESCAPE(text)– Únikové XML znakyCOALESCE(val1, val2, ...)– Prvá hodnota, ktorá nie je null/prázdnaENCODE/DECODE(text, format)– Operácie kódovania (podporované formáty: base64, hex, base64url)
Funkcie regulárnych výrazov
Použite regulárne výrazy na porovnávanie vzorov a extrakciu textu v rámci reťazcových výrazov.
Porovnávanie vzorov
REGEXPMATCH(pattern, text)
Testuje, či text zodpovedá vzoru. Vráti true, ak vzor zodpovedá textu, inak false.
Príklady:
"${REGEXPMATCH('^[A-Z]', 'Hello')}" → true (starts with capital)
"${REGEXPMATCH('^[0-9]+$', 'Hello')}" → false (not all digits)
Extrakcia textu
REGEXP(pattern, text)
Extrahujte text pomocou regulárneho výrazu. Vráti prvú zachytávaciu skupinu, ak existuje, inak celý zhodný text. Vráti null, ak sa nič nezhoduje.
Príklady:
"${REGEXP('^([A-Z])[a-z]+', 'Hello')}" → "H" (first capturing group)
"${REGEXP('^[A-Z][a-z]+', 'Hello')}" → "Hello" (full match, no groups)
Bežné prípady použitia
Validácia e-mailu
"${REGEXPMATCH('^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,}$', email)}"
Extrakcia telefónneho čísla
"${REGEXP('\\(([0-9]{3})\\) [0-9]{3}-[0-9]{4}', '(555) 123-4567')}" → "555"
Validácia dát
"${IF(REGEXPMATCH('^[A-Z]{2}[0-9]{4}$', code), 'Valid format', 'Invalid format')}"
Extrakcia ceny
"${REGEXP('Price: \\$([0-9]+\\.[0-9]{2})', 'Price: $19.99')}" → "19.99"
Podmienená logika
Funkcia IF
Použite IF(podmienka, hodnotaAkTrue, hodnotaAkFalse) pre podmienený výber hodnoty.
Príklady:
"status": "${IF(age >= 18, 'Adult', 'Minor')}" → "Adult"
"message": "${IF(isActive = true, 'Available', 'Unavailable')}" → "Available"
Ternárny operátor
Alternatívna podmienená syntax: podmienka ? hodnotaAkTrue : hodnotaAkFalse (rovnaká ako funkcia IF, ale stručnejšia)
Príklady:
"status": "${age >= 18 ? 'Adult' : 'Minor'}" → "Adult"
"message": "${isActive ? 'Available' : 'Unavailable'}" → "Available"
Vnorený ternárny operátor
Ternárne operátory môžu byť vnorené pre komplexnú podmienenú logiku.
Príklady:
"category": "${age > 65 ? 'Senior' : (age > 18 ? 'Adult' : 'Minor')}" → "Adult"
"grade": "${score >= 90 ? 'A' : (score >= 80 ? 'B' : (score >= 70 ? 'C' : 'F'))}" → "A"
"access": "${userRole = 'admin' ? 'Full Access' : (userRole = 'user' ? 'Limited Access' : 'No Access')}" → "Full Access"
Ternárny operátor s logickými operátormi
Skombinujte ternárne operátory s logickými operátormi pre komplexné podmienky.
Príklady:
"eligibility": "${age >= 18 && isActive ? 'eligible' : 'not eligible'}" → "eligible"
"access": "${isAdmin || isManager ? 'access granted' : 'access denied'}" → "access granted"
"welcome": "${(age > 18 && status = 'verified') || isVIP ? 'Welcome' : 'Access denied'}" → "Welcome"
Priorita operátorov
Priorita (od najvyššej po najnižšiu)
- Volania funkcií
- Zoskupovanie zátvorkami
- Násobenie a delenie (*, /)
- Sčítanie a odčítanie (+, -)
- Spájanie reťazcov (.)
- Porovnávacie operátory
- Logické AND (&&)
- Logické OR (||)
- Ternárny podmienený operátor (? :)
Pokročilé príklady
Komplexná podmienená logika
{
"userStatus": {
"e": "${(age >= 18 && isVerified = true) || isAdmin = true ? 'Authorized' : 'Unauthorized'}"
},
"priceCategory": {
"e": "${price > 1000 ? 'Premium' : price > 500 ? 'Standard' : 'Budget'}"
},
"statusMessage": {
"e": "${isActive ? (lastLogin ? 'Active User' : 'Inactive User') : 'Disabled Account'}"
}
}
Viacúrovňové vnorenie funkcií
{
"processedName": {
"e": "${UPPER(TRIM(REPLACE(rawName, '_', ' ')))}"
}
}
Podmienené vytváranie reťazcov
{
"fullAddress": {
"e": "${street}${IF(LEN(apartment) > 0, ', Apt ' + apartment, '')}${IF(LEN(city) > 0, ', ' + city, '')}"
}
}
Validácia a formátovanie
{
"emailStatus": {
"e": "${IF(LEN(email) > 0 && email != null, 'Email: ' + LOWER(TRIM(email)), 'No email provided')}"
}
}
Komplexná obchodná logika
{
"accessLevel": {
"e": "${IF((userRole = 'admin' || userRole = 'moderator') && isActive = true && LEN(lastLogin) > 0, 'Full Access', IF(userRole = 'user' && isActive = true, 'Limited Access', 'No Access'))}"
}
}
Čistenie a transformácia dát
{
"cleanDescription": {
"e": "${TRIM(STRIPHTML(REPLACE(rawDescription, '\\n', ' ')))}"
}
}
Príklady pre rýchlu referenciu
Základné operácie
"Hello ${world}!"
"${UPPER('hello')} ${LOWER('WORLD')}"
"${IF(isActive, 'Active', 'Inactive')}"
"${isActive ? 'Active' : 'Inactive'}"
Komplexné podmienky
"${IF(age >= 18 && status = 'verified', 'Welcome', 'Access denied')}"
"${price > 100 ? 'Premium' : price > 50 ? 'Standard' : 'Budget'}"
"${COALESCE(nickname, firstName, 'Anonymous')}"
Príklady formátu výrazov
Akékoľvek pole môže použiť formát výrazu poskytnutím objektu s vlastnosťou “e” obsahujúcou reťazec výrazu.
Príklady kalkulačky čísel
"amount": "100+200" → 300
"amount": "3.5%" → 0.035
"amount": "abs(-100)" → 100
"amount": "(100+50)*2" → 300
"amount": "sqrt(16)" → 4
Príklady kalkulačky dátumov
"date": "1.1.2025" → 2025-01-01
"date": "15.6.25" → 2025-06-15
"date": "today + 1y" → one year from today
"date": "1.1.2025 + 5M" → 2025-06-01
Interpolácia premenných
"price": { "e": "${basePrice} * 1.21" }
"fullName": { "e": "Hello ${firstName}!" }
"dueDate": { "e": "${createdDate} + 30d" }
Režimy aktualizácie pre preložiteľné polia
Komplexný sprievodca spracovaním viacjazyčných polí s rôznymi stratégiami aktualizácie
Preložiteľné polia podporujú viacero režimov aktualizácie s rôznym správaním pri spracovaní existujúcich prekladov.
Tri režimy aktualizácie
Režim 1: Aktualizácia špecifická pre jazyk (režim zlúčenia)
"name": "Value"
Aktualizuje preklad iba pre aktuálne vybraný jazyk (@language alebo systémový predvolený jazyk)
Používa: nastavenie @language na začiatku importného súboru (alebo systémový predvolený jazyk)
Predvolené: "name@removeAll": false (zachováva preklady v iných jazykoch)
Príklad: Ak je aktuálny jazyk “en” a existujúce preklady sú {"en": "Old", "cs": "Starý"}, potom "name": "New" vedie k {"en": "New", "cs": "Starý"}
Režim 2: Priame asociatívne pole (režim nahradenia)
"name": {"en": "English", "cs": "Czech"}
Nahradí všetky preklady zadanými jazykmi
Predvolené: "name@removeAll": true (odstráni všetky ostatné existujúce preklady, ktoré nie sú špecifikované)
Príklad: Ak sú existujúce preklady {"en": "Old", "cs": "Starý", "de": "Alt"}, potom "name": {"en": "New", "fr": "Nouveau"} vedie k {"en": "New", "fr": "Nouveau"} (nemecký preklad je odstránený)
Režim 3: Priamy formát poľa (režim nahradenia)
"name": [{"language": "en", "value": "English"}, {"language": "cs", "value": "Czech"}]
"name": [{"language": "en", "name": "English"}, {"language": "cs", "name": "Czech"}]
Alternatívny formát podporujúci vlastnosti “value” aj “name”
Predvolené: "name@removeAll": true (odstráni všetky ostatné existujúce preklady, ktoré nie sú špecifikované)
Príklad: "name": [{"language": "en", "value": "New"}] odstráni všetky ostatné jazykové preklady a ponechá iba anglický
Kontrola odstraňovania prekladov
@removeAll: true
Odstrániť všetky ostatné preklady neuvedené v aktuálnej aktualizácii
Upozornenie: Týmto sa natrvalo odstránia nešpecifikované preklady
@removeAll: false
Zachovať existujúce preklady, aktualizovať/pridať len špecifikované
Bezpečné: Existujúce preklady sa zachovajú a zlúčia
Zhrnutie predvoleného správania
- Režim 1 (špecifický pre jazyk):
@removeAll: false(zlúčiť) - Režim 2 a 3 (priame polia):
@removeAll: true(nahradiť)
Praktické príklady
Zlúčiť s existujúcimi (zachováva ostatné jazyky)
{
"@language": "en",
"products": [
{
"code": "WIDGET-001",
"name": "New English Name",
"name@removeAll": false
}
]
}
Týmto sa aktualizuje iba anglický preklad, pričom sa zachovajú existujúce české, nemecké atď. preklady.
Nahradiť všetky preklady
{
"products": [
{
"code": "WIDGET-001",
"name": {"en": "English", "cs": "Czech"}
}
]
}
Automaticky nastaví @removeAll: true, čím sa odstránia všetky ostatné jazykové preklady.
Formát poľa s selektívnou kontrolou odstraňovania
{
"products": [
{
"code": "WIDGET-001",
"name": [{"language": "en", "value": "English"}],
"name@removeAll": false
}
]
}
Prepísať predvolené nastavenie na zachovanie ostatných jazykov pri použití formátu poľa.
Osvedčené postupy
- Použite režim 1 pre inkrementálne aktualizácie prekladov
- Použite režimy 2/3 pre hromadné importy prekladov z externých systémov
- Vždy explicitne špecifikujte @removeAll, keď je správanie kritické
- Zvážte použitie direktívy @language pre konzistentné spracovanie jazykov naprieč importom
- Otestujte správanie prekladov s ukážkovými dátami pred hromadnými importmi
Časté úskalia
Ďalšie kroky
Teraz, keď rozumiete importnému systému, naučte sa, ako vytvárať šablóny mapovania na transformáciu vašich dát.
[navigate:/help/en/api/mapper|Pokračovať na mapovanie dát|settings]
Súvisiace články
- [navigate:/help/en/user-flows/automatic-imports|Pracovné postupy Automatického importu|refresh-cw]
- [navigate:/help/en/user-flows/data-migration|Sprievodca migráciou dát|upload]
- [navigate:/help/en/api/webhooks|Dokumentácia k webhookom|webhook]