Normalizacja danych z hurtowni

Zestawienie liczbowe na ekranie laptopa

Każdy dostawca przysyła dane w swoim formacie, ze swoimi nazwami pól i swoim rozumieniem tego, co znaczy „dostępność". Praca polega na sprowadzeniu tego do jednej postaci.

Co się różni między dostawcami

  • nazwy i kolejność kolumn,
  • separatory dziesiętne i format liczb,
  • kodowanie znaków — polskie znaki potrafią się rozsypać,
  • sposób zapisu dostępności: liczba, „tak/nie" albo słowo opisowe,
  • ceny netto albo brutto, z rabatem albo bez.

Do tego dochodzi sposób dostarczenia pliku: załącznik w wiadomości, serwer FTP, adres do pobrania albo interfejs programistyczny. Każdy wymaga innego sposobu odbioru, ale dalsza obróbka jest już wspólna.

Różni się także zakres i częstotliwość. Jeden dostawca przysyła pełną ofertę raz na dobę, inny wyłącznie zmiany, a jeszcze inny osobny plik ze stanami magazynowymi kilka razy dziennie.

Dostępność bywa najbardziej myląca

„Dostępny" u jednego dostawcy znaczy „na magazynie", u drugiego „do zamówienia w 14 dni". Przeniesione wprost do sklepu, jedno i drugie wygląda tak samo dla klienta — i prowadzi do zamówień, których nie da się zrealizować.

Rozwiązaniem jest własna skala dostępności, ustalona raz dla całego sklepu, i przypisanie do niej wartości każdego dostawcy. Wtedy zmiana słownictwa po drugiej stronie dotyka jednej definicji, a nie całego katalogu.

Mapowanie zamiast przepisywania

Definicja mapowania na dostawcę, przygotowana raz, obsługuje wszystkie kolejne pliki. Przepisywanie kolumn przy każdym imporcie jest pracą, która wraca co tydzień.

Mapowanie to nie tylko powiązanie kolumn. Mieści się w nim także przeliczenie ceny, sprowadzenie jednostek do wspólnej postaci, obcięcie zbędnych znaków z symboli i decyzja, których pól plik dostawcy nie ma prawa dotykać.

Definicję warto trzymać w postaci czytelnej dla osoby prowadzącej katalog, a nie ukrytej w kodzie. Wtedy dodanie kolumny przez dostawcę wymaga dopisania jednej reguły, a nie zlecenia zmiany programistycznej.

Zmiana formatu bez uprzedzenia

Dostawcy dodają i usuwają kolumny bez zapowiedzi. Import powinien sprawdzać strukturę pliku przed przetworzeniem i zatrzymywać się przy niezgodności, zamiast wczytywać dane do złych pól. Ta kontrola jest częścią szerszego tematu, jakim jest bezpieczny import masowy.

Kontrola przed zapisem

Nagły spadek liczby pozycji, ceny bliskie zeru albo hurtowa zmiana dostępności to sygnały uszkodzonego pliku. Import powinien je wychwycić i wstrzymać się z aktualizacją całego katalogu.

Progi ustala się na podstawie tego, co widać w plikach z poprzednich tygodni. Wartość wzięta z sufitu albo zatrzymuje każdy import, albo nie zatrzymuje żadnego — i w obu przypadkach kontrola przestaje pełnić swoją rolę.

Co jest potrzebne po stronie firmy

Komplet przykładowych plików od każdego dostawcy oraz decyzja, który dostawca jest źródłem prawdy dla produktów występujących u kilku z nich. Potrzebne jest też zmapowane drzewo kategorii — bez tego pozycje wpadają do jednego worka, co opisuje mapowanie kategorii między systemami.

Kiedy nie warto

Przy jednym dostawcy przysyłającym stabilny plik w tym samym układzie normalizacja sprowadza się do prostego importu i nie wymaga osobnej warstwy. Koszt rośnie wraz z liczbą źródeł, więc to ona, a nie liczba produktów, decyduje o sensie tej pracy.