Jak obliczać niestandardowe kolumny w feedach produktowych (bez modyfikowania katalogu)

Buduj obliczone kolumny w feedzie Dynamic w easySales — cena minimalna, cena w drugiej walucie, dostępny stan magazynowy — używając cechy, kolumny i reguły feedu z formułą. Twój katalog pozostaje nietknięty.

Prędzej czy później każdy sprzedawca prowadzący feed Dynamic uderza w tę samą ścianę: partner chce kolumny, której nie ma na produktach. Partner repricingowy chce min_price jako próg. Dystrybutor B2B chce eur_price obok ceny lokalnej. 3PL chce available_stock — fizyczny stan minus to, co zostało zarezerwowane na otwartych zamówieniach. Kolumn nie ma w katalogu. Liczb nie warto przechowywać na każdym produkcie. Ale partner nie zaakceptuje pliku bez nich.

Do tego służą obliczone kolumny w feedzie Dynamic w easySales. Definiujesz kolumnę w feedzie, piszesz krótką formułę, a easySales oblicza wartość przy każdej regeneracji. Twój katalog produktów pozostaje czysty. Nic nie jest zapisywane na samych produktach.

Dlaczego sprzedawcy budują obliczone kolumny

„Obliczona kolumna" to kolumna, której wartość jest kalkulowana w momencie generowania feedu — nie jest nigdzie przechowywana. Istnieje dla pliku, który publikujesz, i tylko dla niego.

Trzy wzorce powtarzają się w kółko:

  • Progi i pułapy. Partner repricingowy chce najniższej ceny, jaką zaakceptujesz. Nie chcesz przechowywać tego jako atrybutu produktu (zmienia się na kanał, na kampanię, na politykę marży). Formuła wyprowadza ją z ceny zakupu + marży przy każdym eksporcie.
  • Feedy wielowalutowe. Partner spoza twojego rynku chce cen w swojej walucie. Przechowywanie równoległej kolumny ceny dla każdego rynku nie skaluje się; konwertowanie w locie — tak.
  • Obliczona dostępność. Partner musi widzieć to, co jest naprawdę do zamówienia, nie to, co jest na półce. stan - stan_zarezerwowany to jedna operacja odejmowania.

Wspólna cecha: wartość jest funkcją innych wartości produktu, przeliczaną przy każdej regeneracji feedu. Przechowywanie jej na każdym produkcie oznaczałoby aktualizowanie każdego produktu za każdym razem, gdy zmienią się dane wejściowe — niepotrzebne obciążenie utrzymaniem.

Jak działa obliczona kolumna w easySales

Trzy elementy, każdy to pięć sekund pracy:

  1. Cecha — miejsce, w którym żyje wartość. Tworzysz ją raz, nadajesz nazwę i zostawiasz pustą na wszystkich produktach.
  2. Kolumna feedu Dynamic — okablowanie, które przenosi cechę do pliku wyjściowego.
  3. Reguła feedu z akcją formuły — obliczenie, które wypełnia miejsce w czasie eksportu.
Diagram pokazujący trzy kawałki obliczanej kolumny feedu w easySales: cecha jako slot, kolumna feedu Dynamic jako okablowanie do wyjścia, reguła feedu z formułą wypełniająca slot przy renderowaniu.
Trzy kawałki, każdy z jedną dobrze zdefiniowaną pracą: cecha jako slot, kolumna feedu Dynamic jako okablowanie, formuła reguły feedu jako wartość.

Miejsce pozostaje puste w katalogu. Reguła wypełnia je podczas eksportu. Kolumna renderuje wypełnioną wartość w pliku. Trzy małe kawałki, każdy z dobrze zdefiniowaną pracą. Dodajesz regułę, regenerujesz, wartość się pojawia. Usuwasz regułę, regenerujesz, wartość znika — bez zmiany żadnego produktu.

Krok 1: Utwórz cechę

Otwórz Katalog → Cechy i utwórz nową cechę. Nadaj jej jasną nazwę — ta, której partner oczekuje w pliku, jest dobrym wyborem.

Przykłady: Cena minimalna, Cena EUR, Dostępny stan.

Nie musisz wypełniać wartości na żadnym produkcie. Cały sens jest taki, że ta cecha jest celem dla formuły, a nie prawdziwym atrybutem produktu. Zapisz i idź dalej.

Zrzut ekranu strony Katalog → Cechy w easySales z nowo utworzoną cechą Cena minimalna, bez wartości na produktach.
Utwórz cechę, nadaj jej jasną nazwę, zostaw pustą. Formuła ją wypełni.

Kilka wskazówek dotyczących nazewnictwa:

  • Wybieraj nazwy, które rozpoznasz za sześć miesięcy. Cena minimalna sprzedaży (PL) jest lepsza niż min_price_pl_v2.
  • Jeśli ta sama wartość będzie używana w kilku feedach, użyj jednej cechy do wszystkich. Wartości obliczone są ograniczone do feedu (reguła żyje na feedzie), więc ta sama cecha może przechowywać różne obliczone wartości w różnych feedach bez kolizji.
  • Unikaj cech, które już mają dane produktowe. Jeśli Napięcie jest prawdziwym polem katalogu, nie używaj go jako slotu obliczanego — wybierz inną nazwę. Obliczone wartości nadpisują istniejący pivot w pamięci; straciłbyś prawdziwe wartości na czas renderowania feedu.

Krok 2: Dodaj cechę do feedu Dynamic

Otwórz feed Dynamic. W konstruktorze kolumn dodaj nowy wiersz, wybierz Cecha z listy kolumn, a następnie wybierz utworzoną przed chwilą cechę z połączonego selektora.

Kolumna wyrenderuje się w pliku wyjściowym. Wartość komórki pochodzi z tego, co reguła obliczy dla każdego produktu.

Zrzut ekranu konstruktora kolumn feedu Dynamic w easySales z kolumną typu Cecha dla Cena minimalna, polem Zmień nazwę ustawionym na min_price.
Dodaj cechę jako kolumnę, a następnie użyj pola Zmień nazwę, aby pasowało do tego, czego oczekuje partner w pliku.

Jeśli partner oczekuje konkretnej nazwy dla tej kolumny — min_price zamiast Cena minimalna, price_eur zamiast Cena EUR — użyj pola Zmień nazwę obok kolumny. Zmieniona nazwa pojawia się jako nagłówek CSV / klucz JSON / nazwa elementu XML; reszta interfejsu zachowuje to, co napisałeś dla siebie. Zmiana nazwy działa na każdej kolumnie feedu Dynamic, obliczanej lub nie — to to samo pole zawsze, gdy partner oczekuje innej nazwy niż ta, której easySales używa wewnętrznie.

Krok 3: Napisz regułę feedu, która oblicza wartość

Przełącz na zakładkę Reguły feedu w tym samym feedzie. Dodaj regułę:

  • Jeśli: ZAWSZE (lub warunek — patrz poniżej).
  • Wtedy: wybierz utworzoną cechę jako właściwość, wybierz formuła jako operator, a następnie napisz formułę.
Zrzut ekranu edytora reguł feedu w easySales — właściwość ustawiona na cechę Cena minimalna, akcja formuła, formuła round(acquisition_price * 1.15, 2).
Reguła feedu z celem cechy i akcją formuły. Wybierasz cechę, piszesz formułę, zapisujesz.

Edytor formuł ma paletę chipów ze zmiennymi, których możesz użyć:

  • ${product.product_sale_price}, ${product.product_full_price} — ceny katalogowe, bez VAT.
  • ${product.product_acquisition_price} — twój koszt.
  • ${product.product_tax_rate} — stawka VAT produktu jako liczba całkowita (np. 19, 23, 8). Podziel przez 100, aby przekonwertować na mnożnik — 1 + ${product.product_tax_rate} / 100 zwraca 1.23 dla stawki 23%, dokładnie tym pomnożysz cenę netto, aby uzyskać brutto.
  • ${product.product_characteristic:<nazwa>} — odczyt innej cechy po nazwie (rozróżnia wielkość liter). Przydatne do łańcuchowania: piszesz cechę z wartością bazową, odwołujesz się do niej z formuły kolejnej cechy.
  • ${product.product_meta_field:<klucz>} — odczyt niestandardowego meta-pola produktu po kluczu.
  • ${product.product_price_group:<id>} — odczyt umownej ceny grupy cenowej dla tego produktu.
  • ${other.currency_rate:FROM:TO} — żywy kurs wymiany między dwoma kodami ISO walut (np. PLN:EUR, EUR:USD).
  • round(<wyrażenie>, <miejsca>) — zaokrągla wynik do stałej precyzji.

Operatory: +, -, *, /, nawiasy do grupowania. Standardowa arytmetyka.

Niektóre kolumny celowo nie są udostępniane jako zmienne formuły — stan, stan_zarezerwowany, waga i inne kolumny niecenowe. Aby obliczyć z nich wartość, użyj operatorów akcji arytmetycznych reguły feedu (zastąp, odejmij, pomnóż, dodaj) zamiast formuła. Przepis Dostępny stan poniżej pokazuje wzorzec.

Zapisz regułę. Następna regeneracja uruchomi ją dla każdego produktu, wypełni cechę w pamięci i wyrenderuje wartość w pliku. Katalog produktów nigdy nie jest dotykany — strona cech pozostaje tak pusta, jak ją zostawiłeś.

Jeśli chcesz, aby formuła stosowała się tylko do niektórych produktów (jednej kategorii, produktów z stanem, produktów konkretnej marki), dodaj warunki po stronie Jeśli: oparte na cesze, kolumnie, kategorii — cokolwiek wspiera konstruktor reguł.

Przepisy z prawdziwego życia

Cena minimalna sprzedaży dla partnera repricingowego

Partner repricingowy potrzebuje progu — ceny, poniżej której nie powinien schodzić. Nie chcesz przechowywać tego na każdym produkcie (zmienia się przy zmianach kosztów lub polityki marży), więc to obliczasz.

  • Nazwa cechy: Cena minimalna
  • Zmiana nazwy kolumny: min_price
  • Formuła: round(${product.product_acquisition_price} * 1.15, 2) — zakup + 15% marży.

Dostosuj mnożnik na kanał, pisząc różne reguły w różnych feedach. Ta sama cecha, różne formuły, różne pliki. Katalog nie widzi nic z tego. Zrzut ekranu w Kroku 3 powyżej pokazuje dokładnie tę regułę skonfigurowaną.

Cena w drugiej walucie dla partnera transgranicznego

Partner jest na innym rynku i chce cen w swojej walucie. easySales ma wbudowaną funkcję kursu wymiany, więc nie utrzymujesz równoległej listy cen.

  • Nazwa cechy: Cena EUR
  • Zmiana nazwy kolumny: price_eur
  • Formuła: round(${product.product_sale_price} * ${other.currency_rate:PLN:EUR}, 2) — zamień PLN:EUR na parę FROM:TO pasującą do twojego przypadku.

Kursy walut odświeżają się automatycznie codziennie — easySales pobiera je z centralnego źródła kursów, więc nie utrzymujesz równoległej tabeli. Jeśli partner potrzebuje stabilnego kursu na okres umowny (zamiast żywego), skontaktuj się z pomocą techniczną i ustalimy odpowiednią konfigurację dla twojego przypadku.

Zrzut ekranu edytora reguł — właściwość ustawiona na cechę Cena EUR, akcja formuła, formuła sale_price * currency_rate(PLN:EUR) zaokrąglona do 2 miejsc po przecinku.
Obliczona kolumna w drugiej walucie: formuła mnoży cenę sprzedaży przez żywy kurs PLN-EUR, zaokrąglony do 2 miejsc po przecinku.

Dostępny stan (fizyczny minus zarezerwowany)

Partner widzi stan, który publikujesz; jeśli to liczba z półki i masz otwarte zamówienia, sprzedasz więcej niż masz. Właściwą liczbą do publikacji jest available-to-promise: stan fizyczny minus zarezerwowane na otwartych zamówieniach.

stan i stan_zarezerwowany nie są wystawione jako zmienne formuły, więc ten przepis w ogóle nie używa operatora formuła. Zamiast tego, łańcuchujesz dwie akcje arytmetyczne na tej samej cesze — pierwsza zapisuje bazę, druga ją koryguje.

  • Nazwa cechy: Dostępny stan
  • Zmiana nazwy kolumny: available_stock
  • Akcja 1: cel = Dostępny stan, operator = zastąp, źródło = kolumna stan. (Ustawia cechę na wartość stanu produktu.)
  • Akcja 2 (dodana pod pierwszą, w tej samej regule): cel = Dostępny stan, operator = odejmij, źródło wartości = pole, kolumna = stan_zarezerwowany. (Odejmuje kolumnę zarezerwowanego stanu od bieżącej wartości.)

Dwie akcje, jedna reguła, od góry do dołu. Pierwsza zapisuje bazę; druga ją koryguje. Możesz załączyć trzecią akcję (dodaj / odejmij przeciwko literalnej liczbie), jeśli twoja matematyka realizacji wymaga stałego buforu bezpiecznego stanu.

Zrzut ekranu edytora reguł feedu w easySales z dwiema połączonymi akcjami na cesze Dostępny stan — zastąp kolumną stan, następnie odejmij kolumnę stan_zarezerwowany.
Dwie połączone akcje, jedna reguła. Pierwsza zapisuje bazę; druga odejmuje zarezerwowaną ilość.

Zmiana nazwy dowolnej kolumny w wyjściu

Pole Zmień nazwę pojawia się obok każdej kolumny w konstruktorze feedu Dynamic, nie tylko obliczanych. Używaj go, kiedy partner oczekuje innej nazwy niż wewnętrzna easySales — price zamiast full_price, cost zamiast sale_price, inventory zamiast stock.

Dwie uwagi:

  • Zmiana nazwy stosuje się do wyjścia pliku: nagłówek CSV, klucz JSON i nazwa elementu XML. Reszta interfejsu używa nazw easySales, abyś ty i twój zespół się nie pogubili.
  • Nazwy elementów XML mają bardziej rygorystyczne reguły niż CSV czy JSON. Jeśli twoja zmiana nazwy zawiera spacje lub interpunkcję, easySales automatycznie ją sanityzuje dla XML — Min cena (PLN) staje się min_cena_pln_ w tagach <min_cena_pln_>. Nagłówki CSV i klucze JSON zachowują dokładnie to, co wpisałeś.

Jeśli dwie kolumny zmieniają nazwę na tę samą nazwę wyjściową, konstruktor feedu blokuje zapis i pokazuje, która koliduje. Wybierz unikalną nazwę i się zapisze.

Kiedy NIE używać obliczanej kolumny

  • Prawdziwe atrybuty produktu. Jeśli dane naturalnie należą do produktu (Kolor, Rozmiar, Napięcie, EAN), użyj zwykłej cechy i przechowuj. Obliczane kolumny są dla wartości, które nie należą do katalogu.
  • Mapowanie kategorii na kanał. Jeśli partner potrzebuje ID kategorii Google Shopping, kodu Skroutz lub jakiegokolwiek mapowania z twojej kategorii na ich, użyj konstruktora specyficznego dla kanału — jest wstępnie zwalidowany i oszczędza pracę nad mapowaniem. Feed Dynamic to opcja otwarta dla partnerów, dla których nie mamy dedykowanego konstruktora. Zobacz Czym jest feed produktów? w celu wprowadzenia do feedów kanałowych.
  • Statyczne stałe wartości. Jeśli każdy produkt dostaje tę samą wartość (condition: new, availability: in_stock), użyj akcji ustaw na wartość na zwykłej kolumnie zamiast syntetyzować cechę — z jedną mniej ruchomą częścią.

Jeśli nie jesteś pewien, czy kolumna powinna być obliczana, przechowywana czy stała, pomoc techniczna może spojrzeć na twój konkretny przypadek. Większość pytań „obliczane-czy-przechowywane?" rozwiązuje się w dwie minuty po naszkicowaniu przypadku użycia.

Karta nie jest wymagana
14 dni darmowego okresu testowego
Anuluj w dowolnym momencie

Buduj kolumny, których naprawdę chcą twoi partnerzy

Otwórz Feedy → Dynamic w easySales i wyślij plik gotowy dla partnera z obliczonymi kolumnami w kilka minut. Nowy tutaj? Wypróbuj easySales za darmo przez 14 dni, bez karty kredytowej.

Często zadawane pytania

Nie. Obliczone kolumny są oceniane w pamięci podczas renderowania feedu, a następnie odrzucane. Otwórz stronę produktów po regeneracji feedu, a zobaczysz te same wartości cech, jakie miałeś wcześniej — puste, w typowej konfiguracji. Katalog nigdy się nie zmienia. Jest to celowe: pozwala publikować wiele różnych obliczanych kolumn w wielu różnych feedach, bez zamiany twoich danych produktowych w bałagan.

Nie. Cecha to po prostu slot, do którego formuła zapisuje przy renderowaniu. Większość konfiguracji obliczanych kolumn tworzy zupełnie nową cechę i nigdy nie nadaje jej wartości na żadnym produkcie. Jeśli cecha ma wartości na niektórych produktach i piszesz regułę, która ją nadpisuje, reguła wygrywa — dla tego jednego renderowania feedu — a oryginalne wartości pozostają nienaruszone w katalogu.

Pola produktu: sale_price, full_price, acquisition_price, tax_rate. Inne cechy po nazwie: ${product.product_characteristic:&lt;Nazwa&gt;}. Konwersja walut: ${other.currency_rate:FROM:TO} zwraca żywy kurs wymiany między dwoma kodami walut. Funkcja round() zaokrągla wyrażenie do podanej precyzji dziesiętnej. Standardowe operatory arytmetyczne (+, -, *, /) i nawiasy do grupowania. Edytor formuł udostępnia to wszystko jako klikalne chipy, więc nie musisz pamiętać dokładnej składni. Uwaga: tax_rate jest liczbą całkowitą (np. 19, 23) — podziel przez 100, gdy używasz go jako mnożnika.

Domyślna częstotliwość to godzinna, a plik regeneruje się tylko wtedy, gdy partner go czyta (więc uśpione feedy nie marnują zasobów). Przy każdej regeneracji formuła ponownie się oblicza wobec aktualnych danych produktu — zmiana ceny na produkcie automatycznie przepływa do obliczonej kolumny przy następnym renderowaniu. Dla eksportów katalogu ERP możesz poprosić pomoc techniczną, aby zmniejszyła to do dziennego; dla szybkich synchronizacji partnerskich pomoc techniczna może to zwiększyć.

Tak. Reguła feedu ma stronę „Jeśli" i stronę „Wtedy". Umieść dowolny warunek po stronie „Jeśli" — cecha X równa się Y, kategoria zawiera Z, marka W, stan > 0 — a formuła uruchomi się tylko dla pasujących produktów. Inne produkty pomijają regułę, a obliczona kolumna pojawia się dla nich pusta w eksporcie. Łącz wiele reguł, aby obsłużyć różne grupy produktów różnymi formułami.

W konstruktorze kolumn feedu Dynamic każdy wiersz kolumny ma pole Zmień nazwę obok rozwijanej listy kolumn. Wpisz nazwę, której oczekuje partner („price", „min_price", „cost", cokolwiek), a ta nazwa pojawi się jako nagłówek CSV / klucz JSON / nazwa elementu XML w pliku wyjściowym. Zmiana nazwy działa na każdej kolumnie, obliczanej lub nie. Nazwy elementów XML są automatycznie sanityzowane, jeśli zmiana nazwy zawiera spacje lub interpunkcję; CSV i JSON zachowują dokładnie to, co wpisałeś.

Tak. Najprostsza ścieżka to dodanie sale_price_including_tax lub full_price_including_tax bezpośrednio jako kolumny feedu Dynamic — to zwykłe kolumny w rozwijanej liście kolumn i już zawierają wartość z VAT. Bez formuły. Jeśli potrzebujesz niestandardowego kształtu (cena sprzedaży plus VAT plus marża, lub z VAT w drugiej walucie), sięgnij po formułę: round(${product.product_sale_price} * (1 + ${product.product_tax_rate} / 100), 2) reprodukuje matematykę z VAT ręcznie. Uwaga: ${product.product_tax_rate} zwraca liczbę całkowitą jak 19 lub 23 — podziel ją przez 100 przed dodaniem 1, aby uzyskać właściwy mnożnik.

Czy ten przewodnik był pomocny?