Power BI Python API kullanarak veri çekme nasıl yapılır?

Power BI Python API, Python programlama dili kullanarak Power BI hizmetleriyle etkileşim kurmanıza olanak tanır. Bu API sayesinde, Power BI hizmetindeki verileri Python programlama dili kullanarak analiz etmek ve işlemek mümkündür.

Veri çekme işlemi için öncelikle Power BI hizmetine bağlanmak gereklidir. Bunun için, öncelikle Azure Active Directory üzerinde bir uygulama kaydetmeniz ve bu uygulama için bir istemci kimliği (client ID) ve istemci sırrı (client secret) oluşturmanız gereklidir. Ardından, Power BI hizmetindeki API'yi kullanarak erişim belirteçleri almanız gereklidir.

Erişim belirteçlerini almak için aşağıdaki kodu kullanabilirsiniz:

import adal
authority_url = 'https://login.microsoftonline.com/<your-tenant-id>'
resource_url = 'https://analysis.windows.net/powerbi/api'
client_id = '<your-client-id>'
client_secret = '<your-client-secret>'
context = adal.AuthenticationContext(authority_url)
token = context.acquire_token_with_client_credentials(resource_url, client_id, client_secret)
access_token = token['accessToken']

Bu kod örneğinde, Azure Active Directory için doğrulama URL'si (authority_url), API kaynağı URL'si (resource_url), istemci kimliği (client_id) ve istemci sırrı (client_secret) gibi gereken bilgileri tanımlamanız gerekmektedir. Ardından, adal modülü kullanarak bir doğrulama bağlamı oluşturulur ve acquire_token_with_client_credentials yöntemi kullanılarak erişim belirteçleri alınır.

Daha sonra, veri çekme işlemi için API kullanılabilir. Aşağıdaki kod örneği, belirtilen bir Power BI raporu ve veri kümesi için tüm tabloları çeker ve bir pandas DataFrame'ine aktarır:

import requests
import pandas as pd
api_url = 'https://api.powerbi.com/v1.0/myorg/groups/<your-group-id>/datasets/<your-dataset-id>/tables'
headers = {'Authorization': f'Bearer {access_token}'}

# Veri çekme işlemi
response = requests.get(api_url, headers=headers)
tables = response.json()['value']
data = []
for table in tables:
table_name = table['name']  
table_api_url = f"{api_url}/{table_name}/rows"
response = requests.get(table_api_url, headers=headers)
rows = response.json()['value']
for row in rows:
data.append(row)
# Verileri pandas DataFrame'e aktarma
df = pd.DataFrame(data)

Bu örnekte, API kullanarak belirtilen Power BI raporu ve veri kümesi için tüm tabloların listesini alıyoruz. Daha sonra, her tablo için satırları API kullanarak çekiyoruz ve bir liste içinde birleştiriyoruz. Son olarak, bu verileri pandas DataFrame'ine aktarıyoruz.

Power BI Python API'si sayesinde, Power BI hizmetindeki verileri Python programlama dili kullanarak analiz etmek ve işlemek oldukça kolaydır.