Протилежні вибірки в Mergado#

Як працювати з протилежними вибірками#

Ця стаття пояснює, що таке протилежні вибірки і як ефективно працювати з ними в Mergado. Ми покажемо різницю між простою протилежною вибіркою (де досить змінити оператор, наприклад з «=» на «!=») і складнішою вибіркою з використанням MQL та оператора NOT. Наприкінці статті ви вмітимете:

  • розпізнати ситуацію, коли варто використати протилежну вибірку,
  • створити просту протилежну вибірку без знання MQL,
  • переписати складну вибірку в MQL і використати заперечення NOT(...), щоб отримати протилежний результат.

Контекст#

Зазвичай, працюючи з вибірками, ви визначаєте товари, які хочете змінити, — наприклад, підвищити ціну, відредагувати назву або приховати їх. Але іноді простіше створити вибірку протилежну — тобто таку, яка вибере все інше, крім певної групи. Інакше кажучи: замість «що я хочу змінити» ви визначаєте «що я не хочу змінювати». Такий підхід заощаджує час передусім у ситуаціях, коли:

  • ви точно знаєте, які товари мають залишитися без змін, або
  • у вас невелика група товарів, яку потрібно зберегти на виході, а всі інші мають бути приховані.

Приклади з практики#

Типовий приклад Ви керуєте фідом із 65 000 товарів. Ви хочете залишити у виході лише 5 000 конкретних товарів, а всі інші приховати. Це можна зробити двома способами:

  • створити вибірку з усіх 60 000 товарів, які вам не потрібні (дуже непрактично), або
  • створити протилежну вибірку: «Будь-що, крім цих товарів.» Саме для цього й слугують протилежні вибірки.

Коли протилежна вибірка стане в пригоді

  • ви не хочете, щоб правило зачепило певну групу товарів (наприклад, не хочете змінювати їм назву чи ціну),
  • ви хочете приховати все, крім певної групи товарів,
  • ви хочете чітко керувати винятками замість довгих списків умов.

Прості протилежні вибірки (без MQL)#

Якщо вам потрібно створити просту протилежну вибірку, не обов’язково одразу використовувати MQL. Досить працювати з протилежними операторами безпосередньо в базовому інтерфейсі вибірок. Принцип простий: замість умови на кшталт «contains / is in list / =» ви використовуєте її заперечення.

Звичайний оператор Протилежний оператор Що робить
= (дорівнює) != (не дорівнює) Вибирає товари з іншим значенням
contains does not contain Вибирає товари, які не містять тексту
is in list is not in list Вибирає товари, яких немає в наведеному списку

Приклад 1 – обернення «contains» Початкова вибірка:

CATEGORY ~OBSAHUJE "Zahrada"

Знаходить усі товари, які мають в елементі <CATEGORY> значення «Zahrada». Протилежна вибірка (залишить лише товари, які це значення не містять):

CATEGORY !~ NEOBSAHUJE "Zahrada"

Приклад 2 – «is in list» чи «is not in list» Початкова вибірка (товари, які ви хочете залишити на виході):

ITEM_ID Je ve výčtu (101, 102, 103)

Протилежна вибірка (товари, які ви хочете приховати, – тобто все, крім наведених):

ITEM_ID Není ve výčtu (101, 102, 103)

Ця вибірка вибере всі товари, крім цих трьох.

Розширені протилежні вибірки за допомогою MQL (NOT)#

Якщо вибірка складніша (кілька умов, логіка AND/OR), радимо використати MQL і оператор NOT. Такий підхід дає повний контроль над тим, як вибірку буде обернено.

Як працює оператор NOT#

У MQL NOT можна використати, щоб «заперечити» умову або весь запит.

Приклади еквівалентності:

ITEM_ID != 43

це те саме, що

NOT(ITEM_ID = 43)
  • ITEM_ID = 43 → вибере товар з ID 43
  • NOT(ITEM_ID = 43) → вибере всі, крім товару з ID 43

Графічне зображення заперечення (словами): NOT обертає множину – вибирає все, що не відповідає початковій вибірці.

Кроки до розв’язання#

1) Вхід у Mergado і перехід до керування вибірками#

  • Увійдіть у свій обліковий запис Mergado.
  • Перейдіть до розділу Products у головному меню.

2) Створення запиту#

  • Оператор NOT завжди додається в розділі Custom MQL query.
  • Можна спершу скласти вибірку в простому інтерфейсі, а потім перемкнутися до розділу MQL, або одразу написати запит у MQL.
  • Створіть вибірку товарів, які хочете залишити.
  • Весь створений запит візьміть у круглі дужки () і перед ним додайте заперечення NOT.

3) Назва й збереження#

  • Дайте вибірці відповідну назву й збережіть її.
  • Потім із нею можна працювати в межах правил (наприклад, використати в правилі приховування).

Практичний приклад#

Ви хочете залишити на виході лише товари, які:

  • мають у назві «kalhoty»,
  • мають параметр колір = fialová,
  • і коштують понад 1100 CZK з ПДВ.

Усе інше ви хочете приховати. Загальна кількість товарів — приблизно 65 000, ця вибірка знайде лише 2.

Порядок дій:

  • В інтерфейсі вибірки перемкніться на Custom MQL query.
  • Початкову вибірку (ту, яка визначає, що залишити) візьміть у () і поставте перед нею NOT. Так ви створите протилежну вибірку: вона вибере всі товари, крім тих, які відповідають початковим умовам. Її можна використати в правилі приховування — у вихідному фіді так залишаться лише товари, які відповідають початковій вибірці.

Поради й часті помилки#

  • Не забувайте про дужки. Якщо ви комбінуєте кілька умов, завжди беріть усю початкову вибірку в дужки:

    NOT(PRODUCTNAME CONTAINS "boty" OR CATEGORY = "Doplňky")
  • Пам’ятайте, що NOT обертає всю логіку, а не лише окремі частини. Якщо ви комбінуєте кілька виразів з AND і OR, результат може відрізнятися від очікуваного. Тому вибірку протестуйте.

Короткий підсумок (огляд)#

Тип вибірки Як створити Приклад
Проста протилежна вибірка Використати протилежний оператор CATEGORY != "Zahrada"
Протилежна вибірка зі списком значень Використати «is not in list» ITEM_ID NOT IN (101,102,103)
Складна протилежна вибірка Використати MQL і NOT(...) NOT(PRODUCTNAME CONTAINS "kalhoty" AND PRICE_VAT > 1100)

Часті запитання#

Коли має сенс використовувати протилежну вибірку?#

Коли ви не хочете, щоб правило зачепило певну групу товарів, хочете приховати все, крім певної групи, або вам потрібно чітко керувати винятками без довгих списків умов.

Як створити просту протилежну вибірку без MQL?#

У базовому інтерфейсі вибірок використайте протилежний оператор (наприклад, != замість =; «does not contain» замість «contains»; «is not in list» замість «is in list»).

Який вигляд має приклад для «contains» і «does not contain»? #

Початкова: CATEGORY ~OBSAHUJE "Zahrada" Протилежна: CATEGORY !~ NEOBSAHUJE "Zahrada"

Як створити протилежну вибірку до списку ID?#

Початкова: ITEM_ID Je ve výčtu (101, 102, 103) Протилежна: ITEM_ID Není ve výčtu (101, 102, 103) – вибере все, крім цих трьох.

Коли вдаватися до MQL і NOT?#

Коли вибірка складніша (кілька умов, комбінація AND/OR) і вам потрібно точно керувати запереченням усього запиту.

Як працює NOT у MQL на простому прикладі?#

ITEM_ID != 43 — це те саме, що NOT(ITEM_ID = 43). NOT вибере всі позиції, які не відповідають умові.

Куди записувати NOT?#

До розділу Custom MQL query. Початкову вибірку візьміть у дужки () і перед нею напишіть NOT.

Чому дужки важливі?#

Вони гарантують, що NOT заперечить саме ту частину, яку ви хочете. У комбінаціях AND/OR без дужок є ризик отримати інший результат, ніж ви очікуєте.

Чи можу я використати протилежну вибірку, щоб приховати все, крім винятків?#

Так. Протилежну вибірку можна використати в правилі приховування, тож у вихідному фіді залишаться лише позиції, які відповідають початковій (не запереченій) вибірці.

Чи впораюся я без знання MQL?#

Так. У простих випадках досить використати в інтерфейсі вибірок протилежні оператори. MQL з NOT знадобиться, коли потрібно заперечити складніші комбінації умов.

Чи була ця стаття корисною?