Cześć,
Bardzo często w naszej pracy zachodzi potrzeba porównywania cen różnych produktów. Możemy parsować strony konkurencji (nie mogłem znaleźć jasnej informacji czy jest to legalne :), możemy zapłacić za dane ceneo.pl lub poszukać danych dostępnych za pomocą API. Ciekawym źródłem jest allegro.pl. API systemu umożliwia odpytanie frazą na przykład eanem wyszukiwarkę (również opisy) i zwrócenie najniżej lub najwyżej ceny. Interfejs jest darmowy, a limity odpytań wysokie.
Oto co musimy wykonać aby sięgnąć po dane (autor wpisu zakłada, że czytelnik posiada Qlik + Rest zainstalowany na komputerze):
- Zakładamy konto na https://apps.developer.allegro.pl/
- Tworzy własną aplikację – interesują nas wartości Client ID i Secret ID
- https://allegro.pl/auth/oauth/token?grant_type=client_credentials Wywołujemy w przeglądarce adres: logujemy się danymi z punktu 2.
- Voila! jeżeli wszystko przebiegło sprawnie przeglądarka zwróci nam odpowiedź zawierającą token wymagany do pobrania danych.
Wyposażeni w token zbudujmy zapytanie GET, które zwróci nam frazę Qlikview w wyszukiwarce allegro i poda nam tylko najniższą cenę.
https://api.allegro.pl/offers/listing?&phrase=Qlikview&limit=1&searchMode=DESCRIPTIONS&sort=+price
Rzućmy okiem na konfigurację Rest Connector w Qlikview:
Wklejamy zbudowany przez nas URL, dodajemy nagłówki – parametry po lewej stronie nagłówka są stałe, jak również “bearer” – token jest zmienną o określony czasie trwania (dokumentacja). Jeżeli test połączenia przebiega prawidłowo możemy przejrzeć dane.
Efekt:
Teraz pozostaje tylko:
- Zdefiniować zmienną i zamienić frazę Qlikview na przykład na ean: LET vEAN$(i) = FieldValue(‘ean’, $(i));
- Wcześniej dodać For i = 1 to FieldValueCount(‘ean’)
- No i nasze produkty: LOAD ean, ceny_z_mojego_erpa, FROM [C:\DANE.xlsx];
- Wklejamy ‘$(vEAN$(i))’ as ean tak aby w wynikowej tabeli mieć cenę i ean.
- Na koniec next i;
Właśnie zbudowaliśmy porównywarkę cen produktów z cenami na allegro przy użyciu rest w Qlikview. Do ideału można w wyżej wymienionym kodzie uwzględnić odnowienie tokena poprzez odpytanie POST, zastosowanie interwałów aby ominąć ewentualne limity odpytań oraz uwzględnienie na wypadek 503 (znalazłem na githubie tickety, że czasem tak się zdarza i nie jest to rozwiązane dalej po stronie allegro). W przypadku niezgodnego token odpowiedź 401.
Przydatne linki:
https://developer.allegro.pl/documentation/