Fascynujące jest, jak z każdą aktualizacją Power BI powiększa zasób dostępnych źródeł danych. Ponieważ API facebooka jest bezpłatne i ogólnodostępne, naturalną konsekwencją było pojawienie się go w produkcie Microsoftu. Przekonajmy się, co można zdziałać przy jego pomocy.
Jak zacząć?
Z dostępnych źródeł danych wybieramy Facebook.
W kolejnym oknie informującym o połączeniu korzystającym z usługi innej firmy klikamy Continue i stajemy przed wyborem profilu, który chcemy zbadać. Jeśli pozostawimy w tym polu me, ściągniemy informacje z profilu, którym się zalogujemy. Zamiast tego, możemy wpisać w to pole nazwę profilu, który nas interesuje, lub jego ID. Najprościej będzie użyć nazwy, którą łatwo odnajdziemy na interesującym nas profilu (tuż pod zdjęciem profilowym, zaczynająca się od symbolu @):
Następnie w polu Connection z listy rozwijanej wybieramy Posts i klikamy ok.
Zostaniemy poproszeni o zalogowanie się do Facebooka. Po zalogowaniu z wysokim prawdopodobieństwem zobaczymy taki oto (lub podobny) ekran:
Oznacza to, że przekroczyliśmy dopuszczalny przez API limit rekordów na wywołanie. Klikamy Cancel, a następnie z dostępnych źródeł danych wybieramy Blank Query:
Otworzy się Query Editor, w którym ze wstążki wybieramy Advanced Editor (lub klikamy prawym przyciskiem myszy na Query1 po lewej stronie i wybieramy tę opcję z listy). Teraz musimy wprowadzić kod definiujący limit postów jako 100:
let
Source = Facebook.Graph("https://graph.facebook.com/v2.8/rbloggers/posts?limit=100")
in
Source
Limit możemy ustawić na dowolną liczbę nie przekraczającą 100 – nie ma to wpływu na finalną liczbę pobranych postów, ale na ich ilość pobraną w jednym zapytaniu.
Klikamy Done i zabieramy się do edycji danych 🙂
Mam już dane. Co teraz?
Zaczynamy od zmiany typu kolumny zawierającej czas opublikowania postu ze znakowej na datetime:
Następnie usuwamy kolumnę, która nas nie interesuje – object_link (klikając na jej nagłówek prawym przyciskiem myszy i wybierając Remove) i zmieniamy nazwę tabeli na rbloggers. Kilkamy Close&Apply na wstążce. Teraz ogranicza nas już tylko wyobraźnia 🙂 Moja podpowiada mi żeby sprawdzić, jak zmienia się liczba postów publikowanych przez społeczność w czasie. W tym celu wybieramy Line chart z dostępnych wizualizacji po prawej stronie, do pól Axis i Values przeciągamy odpowiednio created_time i message i odkrywamy, jak szybko wzrasta liczba publikowanych postów!
Klikając w symbol strzałek w lewym górnym rogu wykresu możemy zmienić poziom agregacji danych. Ikonka pierwsza z prawej dodaje do osi x kolejne poziomy (zwiększa ilość punktów na osi), natomiast środkowa zmienia składową daty wyświetlaną na osi (zamiast liczby postów rocznie możemy zobaczyć np. liczbę postów publikowanych w każdym miesiącu, niezależnie od roku). W ten sposób możemy zaobserwować wakacyjny spadek aktywności oraz sprawdzić, w których latach był bardziej widoczny.
Skoro wiemy już, że liczba postów niemal podwaja się z roku na rok, sprawdźmy czego dotyczą. W tym celu użyjemy wizualizacji Chmura tagów. Wizualizację musimy pobrać z AppStore. W tym celu udajemy się na stronę https://store.office.com/search.aspx?productgroup=PowerBI (lub logujemy się wybierając na wstążce From Store) i wyszukujemy wizualizację World Cloud. Klikamy Add i zapisujemy plik .pbiviz na dysku. Następnie ze wstążki wybieramy From File, w okienku informującym nas o imporcie zewnętrznej wizualizacji klikamy Import i wybieramy właśnie pobrany plik. W wizualizacjach pojawi się nowa ikonka:
Klikamy na nią, następnie do pola Category przeciągamy message i w efekcie otrzymujemy następującą wizualizację:
Word Cloud rozbija zawartość pola message (czyli treść posta) na pojedyncze słowa i zlicza ich częstość. Wielkość słowa na wizualizacji odzwierciedla tę częstość. Widać, że wizualizację zakłóca częste występowanie adresów internetowych, zaimków i innych nieistotnych części mowy. Możemy łatwo pozbyć się ich z wizualizacji klikając na nią, a następnie w ikonę Format pod wizualizacjami (ikona wałka malarskiego). Znajdujemy grupę Stop words, zaznaczamy On i w polu Words wpisujemy po spacji słowa, których nie chcemy widzieć na wizualizacji. Możemy też zrezygnować z obracania słów zaznaczając Off w grupie Rotate text. Ostatecznie otrzymujemy chmurę słów najczęściej występujących w postach r-bloggers:
Klikając w dowolne słowo przekonamy się, kiedy było używano najczęściej patrząc na pierwszy wykres. W ten sposób możemy przekonać się, jak spadła popularność pakietu knitr:
Jak przekonać się, które słowa zyskały, a które straciły na popularności nie klikając w każde z nich? Wykorzystajmy wizualizację Play Axis (pobieramy ją z AppStore jak poprzednio). Wybieramy z wizualizacji nową ikonkę żółtej strzałki.
Do pola Field należy przenieść zmienną czasową, która będzie odpowiadała za filtrowanie pozostałych elementów raportu i chronologię wyświetlania. Ponieważ zmienna created_time zawiera poszczególne dni, odfiltrowanych zostanie jednorazowo zbyt mało elementów, żeby można było zaobserwować jakiś trend. Wygenerujmy więc z naszej zmiennej nową o innej granulacji, np. odpowiadającej kolejnym miesiącom. W tym celu klikamy Edit Queries, podświetlamy zmienną created_time i ze wstążki Add column wybieramy kolejno Date, Month oraz Start of Month (w ten sposób otrzymamy zmienną z datą odpowiadającą pierwszemu dniowi miesiąca z którego pochodzi post; wybór samego miesiąca spowodowałyby utratę informacji o roku i zaburzyłby chronologię).
Żeby pozbyć się niepotrzebnej informacji o godzinie i dniu miesiąca, które zaburzą wyświetlanie wizualizacji, ze wstążki Transform wybieramy Extract oraz First Characters i wpisujemy 7:
Klikamy Close & Apply i w polu Field umieszczamy nową zmienną Start of Month. Możemy jeszcze wyłączyć filtrowanie wykresu liniowego (żeby nie oglądać pojedynczego punktu), klikając na Axis player i ze wstążki Format, wybierając Edit interactions. Na pozostałych elementach raportu pojawią się ikonki filtra i przekreślonego kółka. Klikając przekreślone kółko na wykresie liniowym wyłączymy filtrowanie tego wykresu przez Axis player.
Wystarczy teraz kliknąć play by przekonać się, jak zmieniała się częstość postowania o poszczególnych tematach.
A jeśli nie mogę wypatrzyć interesującego mnie tematu?
Nic prostszego – przeciągamy message do pola Page level filters, zmieniamy typ filtra na Advanced filtering, z listy rozwijanej Show item when the value wybieramy contains i wpisujemy interesujący nas tekst:
Oprócz częstotliwości występowania interesującego nas słowa możemy zobaczyć również kontekst, w jakim występuje.
Należy oczywiście pamiętać, że w zależności od wersji narzędzia i API kilka rzeczy może wyglądać inaczej (również adres AppStore ulega zmianom).
Happy Coding!
Nie działa. Po kliknięciu połącz zgłasza błąd że nie ma takiej wartości błąd 100. Czyżby Facebook zablokował taką opcję już.