Le REST API di Power BI facilitano le operazioni di integrazione, amministrazione e governance. Fornendo accesso programmatico a dataset e report, queste API ti permettono di andare oltre le funzionalità standard della piattaforma di Business Intelligence di Microsoft. Esplora come questi strumenti possono aiutarti a spingere i limiti di ciò che Power BI può realizzare. Puoi utilizzare le Power BI REST API per integrare i tuoi sistemi attuali, automatizzare varie attività e incorporare facilmente i report in applicazioni personalizzate per migliorare l'efficienza dei report. In questo articolo scopriremo come integrare le API in Power BI, come chiamare una Power BI REST API da Python e qual è la differenza tra Power BI e REST API.
Un'API, o Application Programming Interface, funge da intermediario software che permette a due applicazioni di comunicare tra loro. In sostanza, facilita lo scambio e il recupero di informazioni senza richiedere agli utenti di interagire con i dettagli tecnici sottostanti.
L'acronimo REST sta per Representational State Transfer. Di conseguenza, una REST API è un'interfaccia di programmazione che utilizza il concetto di "trasferimento di stato rappresentazionale". In pratica, consente di recuperare elementi di un servizio inviando una richiesta.
Queste API sono destinate a influenzare lo sviluppo e l'architettura del World Wide Web. Esse stabiliscono una serie di vincoli che determinano come dovrebbero comportarsi i sistemi distribuiti.
Le REST API forniscono un metodo flessibile e leggero per integrare le applicazioni. Effettuando una ricerca, si ottengono risultati direttamente dal servizio in cui è stata iniziata la richiesta.
Una REST API è composta da diversi componenti. Tra questi, gli "headers" specificano il metodo di autenticazione e i tipi di contenuto.
Per chiamare una REST API, si utilizza un "metodo". Mentre sono disponibili diversi metodi, quelli più comunemente usati sono POST e GET. Il metodo GET recupera le informazioni, mentre il metodo POST invia informazioni alle risorse web.
L'"Endpoint" è l'URL della risorsa che elabora le richieste. Nel frattempo, "Data" o "Body" si riferisce al contenuto testuale in formato JSON trasmesso alla risorsa.
Per garantire che una REST API funzioni efficacemente, è necessario seguire diversi principi di progettazione. In primo luogo, le applicazioni server e client devono essere completamente disaccoppiate e operare in modo indipendente. Sul lato del client, l'unica informazione accessibile dovrebbe essere l'URL della risorsa richiesta. Il server, a sua volta, è responsabile di inviare solo i dati richiesti al client utilizzando HTTP.
Un'altra caratteristica importante di una REST API è che è stateless, ovvero senza stato. Questo significa che ogni richiesta deve includere tutte le informazioni necessarie per l'elaborazione, eliminando la necessità di sessioni lato server. Il server non è autorizzato a memorizzare alcun dato relativo alle richieste del client.
Le risorse dovrebbero essere memorizzate nella cache quando possibile, sia lato server che lato client. Inoltre, le risposte del server devono includere dettagli su se consentire o meno la memorizzazione nella cache della risorsa fornita.
L'interfaccia dovrebbe mantenere uniformità, il che significa che le richieste per la stessa risorsa devono essere coerenti indipendentemente da dove hanno origine. È inoltre essenziale che chiamate e risposte passino attraverso più livelli intermedi.
Per accedere in modo sicuro alle Power BI REST API, è necessario iniziare con una richiesta di token integrato. Questa richiesta consente chiamate Power BI API e abilita l'esecuzione di varie funzioni.
La differenza principale è che Power BI è la piattaforma per la visualizzazione e l'analisi dei dati, mentre le REST API forniscono l'interfaccia per potenziare, automatizzare e integrare queste funzionalità in un ecosistema più ampio e dinamico.
Power BI è una collezione di strumenti di business intelligence sviluppati da Microsoft. Consente agli utenti di visualizzare i dati attraverso dashboard interattive e report, eseguire analisi avanzate, condividere intuizioni con i membri del team tramite il cloud e connettersi a una vasta gamma di fonti di dati, tra cui database, file Excel e servizi online.
Essenzialmente, Power BI offre un ambiente coeso per trasformare i dati grezzi in rappresentazioni Le REST API, o Interfacce di Programmazione delle Applicazioni costruite su Representational State Transfer, servono come mezzo per far interagire diverse applicazioni utilizzando il protocollo HTTP. Queste API consentono agli sviluppatori di utilizzare le funzionalità di un servizio tramite richieste HTTP (GET, POST, PUT, DELETE), facilitando l'integrazione di vari sistemi in modo standardizzato e scalabile, mentre automatizzano processi che altrimenti richiederebbero interventi manuali.
Nel contesto di Power BI, le Power BI REST API permettono agli sviluppatori di interagire in modo programmato con i servizi di Power BI.
Dev4Side Software è specializzata nell'elaborazione di report personalizzati tramite Microsoft Power BI, trasformando dati complessi in dashboard e report intuitivi per supportare decisioni aziendali informate.
Operando in maniera verticale sull'intero ecosistema Power Platform di Microsoft, abbiamo sviluppato una ottima competenza su Power BI che ci permette di offrire soluzioni di business intelligence per evidenziare insight critici e promuovere l'efficienza operativa.
Contattaci per trasformare i dati della tua azienda in azioni concrete.
La Power BI REST API fornisce accesso a vari endpoint di servizio, consentendoti di eseguire tutte le operazioni supportate dal servizio Power BI.
Puoi creare un'applicazione personalizzata utilizzando la Power BI REST API che permette agli utenti di accedere, aggiornare o eliminare dataset. Inoltre, sfruttando altri endpoint API di Power BI, puoi introdurre diverse funzionalità che conferiscono agli utenti un controllo completo sulla piattaforma.
In sintesi, la Power BI API ti consente di:
Include una vasta gamma di funzionalità attraverso 17 gruppi operativi distinti, come amministrazione, applicazioni, dataset, flussi di dati e report.
Per interagire con Power BI REST API, è necessario ottenere un token di accesso dell'applicazione per l'autorizzazione. Questo token funziona come una credenziale, simile a una password, che consente l'accesso alle risorse protette.
Per prima cosa, è necessario registrare un'applicazione in Azure Active Directory (Microsoft Entra) per ottenere il token di accesso.
Per ottenere il token di accesso Power BI è necessario registrare un’app per Power BI, autoriazzare l’utente tramite Application ID e scambiare il codice di autorizzazione per il token di accesso.
Solo adesso puoi usare il token di accesso per autorizzare la richiesta di Power BI e chiamare la Power BI API.
Di seguito analizziamo nel dettaglio tutti i passaggi riportati sopra.
Per accedere alla Power BI REST API, è necessario registrare un'applicazione in Azure AD (Microsoft Entra ID). Questa configurazione definisce le autorizzazioni necessarie per l'uso dell'API. Visita lo strumento di registrazione dell'applicazione Power BI e accedi con il tuo account Power BI.
Scegli un nome per la tua applicazione e impostane il tipo su "Applicazione Web lato server". Specifica l'URL della pagina iniziale della tua app e l'URL di reindirizzamento dove gli utenti saranno indirizzati con il codice di autorizzazione.
Scorri verso il basso per selezionare le API che la tua applicazione è autorizzata ad utilizzare. Puoi impostare il livello di accesso per queste API ora, con la possibilità di modificarle successivamente in Azure. Clicca su "Registra" per salvare la tua applicazione.
Dopo aver registrato con successo l'applicazione, riceverai l'Application ID e l'Application Secret. Copia e conserva questi dettagli in modo sicuro, poiché li utilizzerai in seguito per utilizzare la Power BI REST API.
Dopo aver registrato l'app, accedi per ottenere il token di accesso. Questo token sarà necessario per chiamare la Power BI REST API nei passaggi successivi. Per farlo, accedi all'indirizzo https://login.microsoftonline.com/common/oauth2/authorize con i seguenti parametri:
Costruisci l'URL e inseriscilo nella barra degli indirizzi del tuo browser, quindi premi Invio. Clicca su "Accetta" per concedere le autorizzazioni richieste all'app.
Verrai reindirizzato all'URL specificato con il codice di autorizzazione incluso. Trova il codice di autorizzazione nell'URL, che appare dopo `code=` e prima di `&`, e copia questo segmento.
Quello segmento è il codice di autorizzazione. Potresti ricevere un errore "pagina non trovata" in questo momento, poiché potresti non aver configurato un'app attiva all'URL di reindirizzamento per gestire la richiesta di autorizzazione.
Una volta ottenuto il codice di autorizzazione, puoi scambiarlo con un token di accesso. Per recuperare il token, invia una richiesta POST all'endpoint del token con il codice e i dettagli specificati:
La risposta includerà il token di accesso. Copia il valore di `access_token` dalla risposta.
Dopo aver ottenuto il token di accesso, puoi utilizzarlo per autenticare le tue richieste la Power BI API. Includi quanto segue nell'intestazione della richiesta:
Bearer {access_token}
Puoi chiamare una REST API direttamente da Power BI. La fonte dati "Web" in Power BI Desktop ti consente di recuperare dati da qualsiasi endpoint di un'API web. Dovrai inserire l'URL JSON e includere il token di accesso se necessario.
Supponiamo che tu voglia recuperare i dati degli utenti da un endpoint di un'API web. Ecco come procedere.
In Power BI Desktop, vai su Home > Dati e clicca su Ottieni dati. Dal menu a discesa, scegli Web. Inserisci l'URL dell'endpoint dell'API web e clicca su OK. Puoi optare per l'opzione avanzata per includere parametri e intestazioni specifiche, se necessario.
A seconda del tipo di autenticazione richiesto, segui questi passaggi:
E questo è tutto! Le informazioni dall'API REST verranno caricate con successo in Power BI. Puoi utilizzarle per generare report visivi, come illustrato di seguito.
Una REST API può fungere da fonte per importare dati in Power BI da vari servizi. Inoltre, puoi impostare aggiornamenti automatici per la tua dashboard di Power BI programmando i refresh dei dati.
Per iniziare, apri l'applicazione Power BI Desktop e clicca sul pulsante "Ottieni dati". Da lì, seleziona l'opzione "Web" e inserisci l'URL dell'endpoint dell'API REST da cui desideri recuperare i dati.
I dati importati da una REST API arrivano solitamente in formato JSON, rendendo essenziale convertirli in formato tabellare per una modellazione e visualizzazione efficace.
Per ottenere questo, fai clic destro sul dataset nell'editor di Power Query e seleziona Converti in Tabella. Questa azione rivelerà un pulsante che ti permette di espandere gli attributi JSON, consentendoti di selezionare quali attributi desideri incorporare nel tuo modello di dati.
Dopo aver creato visualizzazioni nel tuo report utilizzando i modelli di dati importati, puoi costruire una dashboard per condividere queste visualizzazioni pubblicandole nella versione online di Power BI.
Inoltre, puoi impostare un aggiornamento automatico per il dataset. Nell'interfaccia online, fai clic destro sul dataset e seleziona l'opzione Pianifica Aggiornamento. Questo permette a Power BI di recuperare periodicamente nuovi dati dall'endpoint REST API, assicurando che le visualizzazioni della tua dashboard siano sempre aggiornate.
Per consentire alle applicazioni Azure di accedere alle Power BI API, puoi configurare un principal di servizio. Questo funge da identità di sicurezza per l'applicazione, eliminando la necessità di metodi di autenticazione manuali.
Ecco come configurare un principal di servizio per le Power BI REST API:
È importante notare che l'app Azure AD può accedere solo a report, dashboard e dataset di Power BI se ha le autorizzazioni appropriate per il workspace.
Per includere un account di servizio nel tuo Workspace, inizia accedendo a Power BI Service.
Da lì, seleziona il menu "Altro" e poi scegli "Accesso al Workspace" per il workspace pertinente. Nella sezione "Aggiungi amministratori, membri o collaboratori", aggiungi il Principal di Servizio e fai clic su "Aggiungi". Il nome del principal di servizio corrisponde al nome visualizzato dell'app Azure AD.
Hai configurato con successo un principal di servizio e sei pronto per utilizzare le Power BI REST API con esso.
La REST API offre funzionalità avanzate, come la navigazione nella gerarchia delle cartelle, la scoperta dei contenuti delle cartelle, il download delle definizioni dei report, la modifica dei parametri di report predefiniti e la gestione dei piani di aggiornamento, tra le altre capacità. Tutte queste Power BI API possono essere chiamate da Python; di seguito vediamo come fare.
Puoi utilizzare questa istanza nelle chiamate API per autenticarti con il Power BI Report Server e accedere a vari endpoint API. Il seguente esempio di codice illustra come effettuare una richiesta API in Python per ottenere l'elenco dei report Power BI ospitati sul server.
Per autenticarti con l'API del Power BI Report Server, dovrai usare la libreria requests_ntlm2 insieme al metodo HttpNtlmAuth per l'autenticazione NTLM. Innanzitutto, definisci le variabili username, password e baseurl. Quindi, crea un'istanza di HttpNtlmAuth utilizzando queste credenziali per stabilire la connessione.
from requests_ntlm2 import HttpNtlmAuth
import requests
import os
import pandas as pd
# please change username, password and localhost
username = "username"
password = 'password'
localhost = "localhost"
# baseurl
baseurl = "http://{}/Reports/api/v2.0".format(localhost)
# Auth
auth = HttpNtlmAuth(username=username, password=password)
# example
result = requests.get(os.path.join(baseurl, "PowerBIReports"), auth=auth).json()
print(result)
Il codice recupera un elenco di report Power BI dal Power BI Report Server accedendo all'endpoint PowerBIReports. Invia una richiesta GET all'endpoint designato, autenticandosi con le credenziali fornite. La risposta risultante viene quindi convertita in un DataFrame di Pandas per una gestione e un'analisi più semplici.
reports_json = requests.get(os.path.join(baseurl, "PowerBIReports"), auth=auth).json()
reports_df = pd.DataFrame(reports_json['value'])
print(reports_df.head())
Ecco un frammento di codice Python per ottenere l'elenco delle cartelle dal Power BI Report Server. Questo codice utilizza la libreria requests per inviare una richiesta GET all'endpoint pertinente e elabora la risposta JSON per generare un DataFrame di Pandas, contenente i dettagli delle cartelle disponibili sul server.
folders_json = requests.get(os.path.join(baseurl, "Folders"), auth=auth).json()
folders_df = pd.DataFrame(folders_json['value'])
print(folders_df.head())
Per ottenere i CacheRefreshPlans per tutti i report Power BI pubblicati sul Power BI Report Server, è necessario prima raccogliere i dettagli di tutti i report. Successivamente, è necessario iterare attraverso ogni report per recuperare i relativi CacheRefreshPlans.
Questo si ottiene prima recuperando l'elenco completo dei report Power BI e poi accedendo ai CacheRefreshPlans per ogni report singolarmente. Combinando i risultati di ciascun report, puoi creare un DataFrame completo che offre una panoramica dei piani di refresh per tutti i report Power BI.
def get_report_CacheRefreshPlans(tag):
result = requests.get(os.path.join(baseurl, tag), auth=auth).json()
reports = result['value']
cache_refresh_plans = [requests.get(os.path.join(baseurl, "PowerBIReports({})/CacheRefreshPlans".format(report['Id'])), auth=auth).json()['value'] for report in reports]
df = pd.concat([pd.DataFrame(plans) for plans in cache_refresh_plans])
return df
df_refresh_plans = get_report_CacheRefreshPlans("PowerBIReports")
Per ottenere l'elenco degli utenti collegati ai report di Power BI sul Power BI Report Server, puoi utilizzare il seguente codice Python. Questo codice interagisce con il Power BI REST API per recuperare le politiche degli elementi per ogni report ed estrarre le informazioni sugli utenti pertinenti.
Una volta eseguito il codice, avrai un DataFrame che include gli ID dei report, i nomi degli utenti di gruppo e i ruoli degli utenti collegati a ciascun report. Queste informazioni possono essere utilizzate per gestire e analizzare le politiche di accesso e i permessi degli utenti per i report di Power BI sul server.
def get_Policies_for_all_reports(tag):
result = requests.get(os.path.join(baseurl, tag), auth=auth).json()
reports_df = pd.DataFrame(result['value'])
policies = []
for report_id in reports_df['Id']:
baseurl_report = "{}/PowerBIReports({})".format(baseurl, report_id)
report_result = requests.get(os.path.join(baseurl_report, 'Policies'), auth=auth).json()
report_policies_df = pd.DataFrame(report_result['Policies'])
report_policies_df['ReportID'] = report_id
report_policies_df = report_policies_df[['ReportID', 'GroupUserName', 'Roles']]
policies.append(report_policies_df)
all_policies_df = pd.concat(policies, axis=0)
return all_policies_df
df_users = get_Policies_for_all_reports("PowerBIReports")
Il codice sfrutta l'API di Power BI Report Server per raccogliere informazioni sulla sicurezza a livello di riga dai report di Power BI. Include due funzioni principali: `get_df_from_pbrs`, che recupera un DataFrame dei report, e `get_report_related_data`, che ottiene i ruoli del modello di dati e le assegnazioni dei ruoli per ciascun report.
I DataFrame risultanti forniscono informazioni sulle impostazioni di sicurezza a livello di riga nei report di Power BI sul Power BI Report Server. Puoi facilmente ottenere queste informazioni chiamando le funzioni con i parametri pertinenti.
def get_df_from_pbrs(tag):
result = requests.get(os.path.join(baseurl, tag), auth=auth).json()
df = pd.DataFrame(result['value'])
return df
def get_report_related_data(tag, endpoint):
re = []
for i in range(len(get_df_from_pbrs(tag))):
id = get_df_from_pbrs(tag)['Id'][i]
url = "{}/PowerBIReports({})".format(baseurl, id)
result = requests.get(os.path.join(url, endpoint), auth=auth).json()
df_row = pd.DataFrame(result['value'])
df_row['ReportID'] = id
if endpoint == 'DataModelRoleAssignments' and len(df_row) != 0:
df_row['DataModelRoles'] = df_row['DataModelRoles'].apply(lambda x: x[0])
re.append(df_row)
df = pd.concat(re, axis=0)
return df
df_DataModelRoles = get_report_related_data(tag="PowerBIReports", endpoint="DataModelRoles")
df_DataModelRoleAssignments = get_report_related_data(tag="PowerBIReports", endpoint="DataModelRoleAssignments")
Microsoft Power BI implementa un sistema di throttling per migliorare le prestazioni e prevenire l'abuso delle API. Vengono imposti limiti basati sul tempo riguardo al numero di richieste API e righe elaborate. Anche se non ufficialmente documentati, ecco alcuni limiti di frequenza comunemente osservati per il Power BI REST API:
Se superi questi limiti in un certo intervallo di tempo, potresti ricevere il codice di stato 429. Inoltre, la funzione dei dataset push, che supporta aggiornamenti in tempo reale, ha le sue restrizioni specifiche, tra cui:
Non è compatibile con i profili di servizio principale.
Le Power BI REST API sono essenziali per chi lavora quotidianamente con Power BI. Queste Power BI API permettono di automatizzare, gestire e integrare operazioni complesse, eliminando la necessità di interventi manuali e riducendo il tempo impiegato.
Grazie alla loro capacità di interfacciarsi con sistemi esistenti, aggiornare automaticamente i dataset, incorporare report in applicazioni personalizzate e gestire permessi e ruoli, le Power BI REST API ampliano notevolmente le funzionalità della piattaforma Power BI, consentendo di sfruttare al massimo il potenziale dei dati.
Ecco le risposte ad alcune delle domande più frequenti sulle REST API di Power BI, basate sul contenuto del nostro articolo.
Le API REST di Power BI sono interfacce di programmazione che consentono l'accesso programmatico alle funzionalità del servizio Power BI, come set di dati, report e dashboard, permettendo l'integrazione, l'automazione e l'incorporamento delle capacità di Power BI in applicazioni personalizzate.
Puoi gestire i contenuti di Power BI, eseguire compiti amministrativi, integrare i contenuti di Power BI in applicazioni personalizzate e automatizzare i processi.
Per usare le API REST di Power BI, registra un'applicazione in Azure Active Directory, ottieni un token di accesso e usalo per autenticare le richieste API.
Sì, Power BI può chiamare direttamente una API REST utilizzando la fonte dati 'Web' in Power BI Desktop.
Le API REST di Power BI hanno limiti come 120 richieste POST al minuto, 10.000 righe per richiesta POST e 1 milione di righe all'ora. Superare questi limiti può comportare un codice di stato 429.
Il team Modern Apps è specializzato nello sviluppo e nell'integrazione all'interno dell'intero ecosistema Microsoft 365. Progettiamo applicazioni native per le piattaforme Microsoft ed Azure e implementiamo processi aziendali che si integrano e massimizzano l'investimento aziendale effettuato con Microsoft 365.