Blog Analityczny. Narzędzia. Techniki. Rozwiązania Analityczne.

Wykorzystanie API Piwik PRO do pobrania i wizualizacji danych w Microsoft Power BI

04.2023 | Piwik PRO | Microsoft Power BI | API

Microsoft Power BI to obecnie jedno z popularniejszych rozwiązań BI do analizy, wizualizacji i wnioskowania na bazie danych. Od kliku lat już zajmuje pierwsze miejsce w raportach Gartnera, wyprzedzając m.in. Tableau.

Zaletą rozwiązań typu Power BI czy Tableau, jest możliwość połączenia się z różnymi źródłami danych i ujęcia ich w jednym systemie raportowania. Takimi danymi mogą być również dane z systemu typu Web Analytics.

Sprawdźmy zatem, jak wygląda możliwość połączenia danych zbieranych przez Piwik PRO z Microsoft Power BI.

W niniejszym przykładzie korzystamy z wersji bezpłatnej - Piwik PRO Core.

Zakres artykułu:

W ramach dostępnych integracji Piwik PRO nie posiada konektora wbudowanego w Power BI, ale posiada API, które wykorzystamy w niniejszym przykładzie.

1. Możliwe ścieżki integracji

Dostępność API daje nam możliwość kilku działań w zakresie integracji, każde z nich ma swoje wady i zalety oraz koszt, związany z developmentem.

  • Sposób 1. Wykorzystujemy API jako wsad do wbudowanego konektora na bazie Pythona.
  • Sposób 2. Wykorzystujemy API do pobrania danych, do dedykowanej bazy, a następnie łączymy się z poziomu Power BI do tej bazy
  • Sposób 3. Wykorzystujemy API do pobrania danych w ramach Google Sheet i następnie łączymy się z poziomu Power BI do tak stworzonego arkusza

Rozwiązania 1 oraz 3 mają zastosowanie głównie w przypadku mniejszych wolumenów czy raportów ad-hoc, gdzie ważna jest analiza np. okresu kampanijnego, czy jakiegoś określonego fragmentu danych.

Sposób 2 jest natomiast przeznaczony do większych wolumenów, gdzie potrzebujemy dokonywać głąbszych analiz, na większej ilości wymiarów i w dłuższych przedziałach czasu.

W naszym przypadku skoncentrujemy się na sposobie pierwszym , gdyż jest on najściślej powiązany z interfejsem Power BI, a jednocześnie jest szybki w realizacji.

2. API Piwik PRO

Nim przejdziemy do Microsoft Power BI, to jednak wpierw zobaczmy, gdzie można znaleźć dane do API w przypadku usługi Piwik PRO.

Nie będzie to żadnym odkryciem, jeżeli powiem, że standardowo mamy stronę, poświęconą dokumentacji i opisowi możliwości API.

Strona jest tutaj.

Być może jednak, zaskoczeniem będzie fakt, że Piwik PRO powinien dostać jakiegoś małego Oskara , za alternatywny sposób pokazania dokumentacji - otóż, w panelu usługi, przy (większości) raportów znajdziemy zdefiniowane zapytanie do API (api call), o ten pokazany zestaw danych.

Zobaczmy to na przykładzie:

Logujemy się do Piwik PRO i wybieramy przykadowy raport np. Audience Overview.

Na stronie Audience overview, przechodzimy do wykresu Page views, klikamy przy nim ikonkę trzech kropek (...).

Otworzy się menu, w którym wybieramy View API call definition:        

Definicja API call pojawia nam się w okienku typu pop-up. Pamiętajmy, że jest to definicja, która dotyczy tylko i wyłącznie danego wykresu, a nie całej strony na której jest kilka zestawów danych.

3. Oprogramowanie API Call

Przejdźmy teraz do oprogramowania naszego API call , tak aby pobrać dane i zobaczyć jak wyglądają pobrane wyniki.

Przechodzimy do dowolnego edytora programistycznego i definiujemy kolejne fragmenty naszego skryptu.

A. Pobranie niezbędnych bibliotek

Pobieramy m.in. Bibliotekę pandas, numpy oraz requests.


# import bibliotek
import requests
import json
import numpy as np
import pandas as pd

B. Autoryzacja dostępu

W miejsce 'your-client-id ' oraz 'your-client-secret ', wpisujemy odpowiednio nasze wartości dla Client ID oraz Client Secret.

Wartości te są dostępne w panelu Piwik PRO - aby je utworzyć - należy przejść poniższą ścieżkę:

Menu => Profile => API Keys => Create a Key

Pełny kod tej sekcji wygląda następująco:


# header
headers = {
    'Content-Type': 'application/json',
}

# payload
json_data = {
    'grant_type': 'client_credentials',
    'client_id': 'your_client_id',
    'client_secret': 'your_client_secret',
}

# zapytanie post
response =  requests.post('https://surowiecki.piwik.pro/auth/token', headers=headers,  json=json_data)

# odpowiedź
json_string =  response.text 
json_dict =  json.loads(json_string)
array_values =  np.array(list(json_dict.values()))
 
Zdefiniowanie  danych, jakie chcemy pobrać i wykonanie API call o te dane:

# header
headers = {
    'Authorization': 'Bearer ' +  array_values[2],
    'Content-Type': 'application/vnd.api+json',
}

Uwaga: w polu website_id podajemy numer ID naszej strony.

Website_ID jest dostępny, w poniższej lokalizacji:

Menu => Administration => [nazwa_twojej_strony] => ID (kopiujemy identyfikator)


# treść zapytania  została skopiowana z pokazanego wcześniej raportu
data = '''
{
"date_from":  "2023-03-01",
"date_to":  "2023-04-26",
"website_id":  "website-id",
"offset":  0,
"columns":  [
{
"transformation_id":  "to_date",
"column_id":  "timestamp"
},
{
"column_id":  "visitors"
},
{
"column_id":  "sessions"
},
{
"column_id":  "page_views"
},
{
"column_id":  "goal_conversion_rate"
},
{
"column_id":  "events_per_session"
},
{
"column_id":  "returning_visitors_rate"
},
{
"column_id":  "goal_conversions"
}
],
"order_by":  [
[
0,
"asc"
]
],
"filters":  null,
"metric_filters":  null
}
'''

# zapytanie POST i  odpowiedź
response =  requests.post('https://surowiecki.piwik.pro/api/analytics/v1/query/',  headers=headers, data=data)

Przygotowanie wsadu  dla Power BI

# konwersja  odpowiedzi z API na format JSON
response_data =  json.loads(response.text)

# pobranie danych
data_array =  response_data['data']

# zdefiniowanie  kolumn danych
column_names =  ["timestamp__to_date", "visitors", "sessions",  "bounce_rate", "goal_conversions",  "goal_conversion_rate", "goal_revenue__sum"]

# konwersja do  tablicy Pandas
df =  pd.DataFrame(data_array, columns=column_names)

Cały kod sprawdzamy - np. df.head() - wynik jego działania powinien być podobny do wyniku jak poniżej:

4. Microsoft Power BI

Uruchamiamy Power BI i wybieramy jako konektor opcję "Python script" , a następnie klikamy przycisk Connect.

Pojawi się okienko, do którego należy przekopiować nasz skrypt.

Po wklejeniu skryptu, klikamy OK i musimy odczekać chwilę. Jako wynik pojawi nam się kolejne okno, w którym zobaczymy wizualizację naszego DataFrame.

Dostępne są standardowe opcje dalszego procedowania z połączeniem do zestawu danych, czyli:

  • Load => zostaje zestawione połączenie pomiędzy źródłem danych a Power BI
  • Transform Data => również zostaje zestawione połączenie, ale użytkownik jest przekierowany do edytora Power Query, w którym może wykonać operacje porządkujące dane

W naszym przypadku klikamy Load:

W kolejnym kroku, zobaczymy już interfejs tworzenia raportów PBI tzn. nasz zestaw danych jest wgrany i dostępny do tworzenia raportów i analiz.

A zatem mamy połączenie z API Piwik PRO i możemy budować pierwsze raporty:

5. Uwagi. O czym należy pamiętać?

Pokazana metoda jest użyteczna przy mniejszych porcjach danych i/lub prostszych analizach.

W naszym kodzie daty są podane jako stałe wartości - w produkcyjnej wizualizacji warto zadbać, aby szczególnie druga data - końca analizowanego okresu - była dynamiczna lub wpisana "do przodu" (zamiast aktualnej daty).

6. Podsumowanie

Pokazania API call przy konkretnych raportach, to niby prosty zabieg, ale bardzo wygodny z punktu widzenia osoby, która pragnie zbudować własną warstwę wizualizacji do konkretnych raportów, lub też chce analizować dane, korzystając z narzędzi typu BI.

Niniejszy artykuł pokazał prosty przykład tego, jak możemy wykorzystać Microsoft Power BI do tworzenia raportów, w oparciu o dane dostarczane przez Piwik PRO.