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.
![Get Data - Facebook Get Data - Facebook](https://sii.pl/blog/wp-content/uploads/2017/08/1.-Data-Source.png)
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 @):
![Screen z profilu Facebooka - nazwa profilu Screen z profilu Facebooka - nazwa profilu](https://sii.pl/blog/wp-content/uploads/2017/08/2.-Profile-name.png)
Następnie w polu Connection z listy rozwijanej wybieramy Posts i klikamy ok.
![Connection - Posts Connection - Posts](https://sii.pl/blog/wp-content/uploads/2017/08/3.-Connection-string.png)
Zostaniemy poproszeni o zalogowanie się do Facebooka. Po zalogowaniu z wysokim prawdopodobieństwem zobaczymy taki oto (lub podobny) ekran:
![Unable to connect Unable to connect](https://sii.pl/blog/wp-content/uploads/2017/08/4.-Limit-error-.png)
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:
![Get Data - Blank Query Get Data - Blank Query](https://sii.pl/blog/wp-content/uploads/2017/08/5.-BlankQuery.png)
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:
![Query Query](https://sii.pl/blog/wp-content/uploads/2017/08/6.-Advance-editor.png)
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:
![created time - Date/Time created time - Date/Time](https://sii.pl/blog/wp-content/uploads/2017/08/7.-Date-time.png)
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!
![opcje w panelu po prawej stronie opcje w panelu po prawej stronie](https://sii.pl/blog/wp-content/uploads/2017/08/8.-Line-chart.png)
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.
![wykresy wykresy](https://sii.pl/blog/wp-content/uploads/2017/08/8.1-Line-chart-aggregation.png)
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:
![ikona WordCloud ikona WordCloud](https://sii.pl/blog/wp-content/uploads/2017/08/9.-Word-cloud-ikona.png)
Klikamy na nią, następnie do pola Category przeciągamy message i w efekcie otrzymujemy następującą wizualizację:
![wizualizacja z WordCloud wizualizacja z WordCloud](https://sii.pl/blog/wp-content/uploads/2017/08/10.-Word-cloud-plot.png)
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:
![opcje w panelu po prawej stronie opcje w panelu po prawej stronie](https://sii.pl/blog/wp-content/uploads/2017/08/11.-Word-cloud-properties-e1501837762816.png)
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:
![wykres wykres](https://sii.pl/blog/wp-content/uploads/2017/08/12.-Word-cloud-knitr.png)
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.
![ikona Play Axis ikona Play Axis](https://sii.pl/blog/wp-content/uploads/2017/08/17.-Axis-player.png)
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ę).
![Date - Month - Start of Month Date - Month - Start of Month](https://sii.pl/blog/wp-content/uploads/2017/08/16.-Start-of-month.png)
Ż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:
![Extract First Characters Extract First Characters](https://sii.pl/blog/wp-content/uploads/2017/08/18.-Extract-month.png)
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.
![wizualizacja z playerem wizualizacja z playerem](https://sii.pl/blog/wp-content/uploads/2017/08/19.-edit-interactions.png)
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:
![show items when the value contains show items when the value contains](https://sii.pl/blog/wp-content/uploads/2017/08/14.1-Filtr.png)
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ż.