Poznaj możliwości pakietu simple-salesforce oraz przydatne porady!



Kiedy myślimy o platformach CRM jednym z pierwszych naszych skojarzeń będzie najprawdopodobniej Salesforce.com (SFDC). System ten stosowany jest u szerokiej gamy odbiorców, którzy decydują się na wykorzystanie jego wielu komponentów. Celem tego artykułu nie jest jednak zachęcenie odbiorcy do skorzystania z usług SFDC, kieruję go bowiem do osób, które stanęły przed nieco innym zadaniem. SFDC z innej perspektywy jest nie tylko narzędziem CRM, ale równocześnie miejscem składowania znacznej ilości danych, które wykorzystuje i udostępnia swoim użytkownikom. Co jednak w sytuacji, gdy dla przykładowego przedsiębiorstwa, SFDC to jedno z wielu źródeł danych, które chcielibyśmy razem wykorzystać na potrzeby spójnej analityki? Zakładając, że dysponujemy hurtownią danych lub data lake’iem, przystąpimy z entuzjazmem do integracji z platformą SFDC.


Przed pierwszą linijką kodu: czyli wybór narzędzi


Preferencji co do wykorzystywanej technologii może być wiele. Do integracji z SFDC możemy użyć rozwiązań komercyjnych, np. w postaci connectorów do najpopularniejszych platform chmurowych. Wybór najlepszego narzędzia pozostawiam każdemu w zależności od jego potrzeb i wymagań. Sam natomiast przedstawię swoje doświadczenia i porady w wykorzystaniu jednego z nich. Jest to pakiet open-source simple-salesforce dla języka python, który udostępnia szereg funkcjonalności opartych na API platformy SFDC.


Od uwierzytelniania do pobranych danych


Ta część artykułu będzie zawierać praktyczne porady jak wykorzystać simple-salesforce do integracji z SFDC. Zaczynając od uzyskania połączenia z platformą, a kończąc na ramce danych załadowanych z jej obiektów, całość uzupełnią przykładowe linijki kodu. Czas na pierwszy krok, uwierzytelnienie:



W ten sposób utworzyliśmy połączenie z SFDC, teraz z pomocą podstawowych metod użytej klasy możemy wykonać testowe zapytanie w języku SOQL:



W wyniku otrzymamy słownik z rekordami w formie JSON, które zostały zwrócone przez API SFDC. Teraz pozostaje zapisać je w docelowy miejscu i możemy zakończyć pracę… Jak można się domyślić nie jest to jednak koniec, a dopiero początek przygody z integracją SFDC. Nadchodzi czas na prawdziwie użyteczne funkcjonalności omawianego pakietu. Przejdźmy do dziedziny metadanych, które możemy uzyskać na temat integrowanej platformy SFDC oraz jej obiektów. W celu zebrania informacji o wszystkich obiektach dostępnych w serwisie, stwórzmy ramkę danych:



Możemy sprawdzić w niej przykładowo jakie operacje są dozwolone dla danej tabeli lub czy jest ona domyślnie dostępna czy też utworzona przez użytkownika. Jedne z kluczowych metadanych to odpowiednio pola:

  • label – nazwa obiektu, którą możemy interpretować jako etykietę biznesową

  • name – techniczna nazwa obiektu, pod którą jest on identyfikowany np. w API

Konstruując zapytania SOQL z wykorzystaniem simple-salesforce, musimy posługiwać się technicznymi nazwami tabel.


Rozbudowane zapytania


Załóżmy, że wytypowaliśmy tabelę, którą chcemy w pełni pobrać, a może też regularnie uaktualniać w naszym miejscu składowania, oraz znamy jej techniczną nazwę. Najpewniej nasz obiekt zainteresowania posiada wiele kolumn i rekordów. Na potrzeby pobierania dużych wolumenów danych, SFDC udostępnia dedykowane bulk API, z którego również możemy skorzystać za pomocą używanego przez nas pakietu. Przed skonstruowaniem zapytania możemy ponownie pobrać metadane, tym razem opisujące pola dostępne w danym obiekcie, wraz z informacjami np. o typie danych:



Wiedza ta będzie szczególnie przydatna, jeśli naszym celem jest ekstrakcja wszystkich kolumn dostępnych w obiekcie. Dialekt SOQL nie pozwala na wykonanie zapytania SELECT *, wymaga on podawania wprost pól, o które chcemy odpytać bazę. Rozwiązaniem jest wyciągnięcie i transformacja kolumny name z otrzymanej ramki, na przykład w sposób zaprezentowany powyżej. Dodatkowo bulk API nie pozwala na pobieranie pól typu compound, z tego powodu są one wykluczane z listy tych do pobrania. Nie stanowi to jednak problemu, gdyż pola te w formie rozbitej na kilka kolumn są w obiektach powielone. Ostatecznie przykładowe zapytanie możemy wykonać następująco:



Otrzymane dane są w formie listy obiektów typu JSON. Dla przykładu załadowałem je do ramki danych pandas. Od tego momentu są one gotowe do ewentualnego dalszego wykorzystania.

Warto wiedzieć

  • Bulk API również posiada swoje ograniczenia wydajnościowe, informacje na ten temat znajdziemy w odpowiednim miejscu dokumentacji.

  • Na potrzeby obsługi wdrażanej integracji przydatne mogą okazać się pola techniczne dostępne w każdym z obiektów np. IsDeleted (flaga usuniętych rekordów) i SystemModstamp (timestamp ostatniej modyfikacji).

  • Dodatkowym źródłem metadanych o obiektach są tabele FieldDefinition i EntityDefinition, które możemy odpytać jak wszystkie pozostałe z platformy. Znajdziemy w nich przykładowo informacje o indeksowaniu kolumn, co może być przydatne w konstrukcji zapytań uwzględniających filtrowanie czy sortowanie.

Podsumowując, w mojej ocenie simple-salesforce to godne polecenia narzędzie. Jako największe atuty wskazałbym łatwość skorzystania z metadanych platformy SFDC oraz dużą swobodę w użyciu, zgodnie z naszymi potrzebami. Z drugiej strony minimalistyczna koncepcja pakietu nakłada na nas odpowiedzialność za obsługę potencjalnych błędów i problemów wynikających z ograniczeń API platformy SFDC. Zainteresowanym simple-salesforce polecam dokumentację SFDC oraz repozytorium pakietu na GitHubie, gdzie znajdziemy najwięcej aktualnych informacji oraz opis pozostałych funkcjonalności.



Piotr Fic

Junior Machine Learning Developer

piotr.fic@bitpeak.pl


66 wyświetleń

Ostatnie posty

Zobacz wszystkie