Collega Microsoft Power BI a Spark per vedere report e dashboard dentro Spark e/o spingere i dati di Spark in dataset Power BI per analisi avanzate.
Cosa sincronizziamo
Report/Dashboard (Power BI → Spark, real-time via embed)
Filtri/RLS (Power BI ↔ Spark, real-time: mapping utente/ruolo)
Dataset KPI Spark (opz.) (Spark → Power BI, notturno/orario)
Stato refresh dataset (opz.) (Power BI → Spark, ogni 15’)
Parametri report (opz.) (Spark → Power BI, on-demand)
A cosa serve
Visualizzare in Spark i report Power BI già approvati, con permessi e filtri utente.
Unire i dati di Spark (obiettivi, payout, completion) con fonti finance/sales in Power BI.
Distribuire una sola versione del dato a HR, manager e C-level, senza export manuali.
Alert/refresh guidati: refresh schedulati o on-demand in base ai cicli HR.
Come si configura (3 step)
Prerequisiti
Licenze Power BI Pro per autori/consumatori (o Premium / PPU per embed avanzato).
Microsoft Entra ID: App Registration (client id/secret), Service Principal abilitato in Power BI.
Workspace con Report/Dataset pubblicati; permessi su workspace.
Lato Power BI
Abilita “Allow service principals to use Power BI APIs” e assegna il SP al workspace.
Raccogli tenantId, clientId, clientSecret, groupId (workspace), reportId, datasetId.
(Opz.) Configura RLS e/o parametri per filtri (es. costCenter, orgUnit).
Lato Spark
Inserisci credenziali e ID (tenant, client, workspace/report/dataset).
Scegli modalità: Embed (view in Spark) e/o Export Spark→Power BI (push dataset).
Mappa filtri/RLS con campi utente Spark, testa con un utente pilota.
Sicurezza & controllo accessi
OAuth2 (Entra ID) con Service Principal; token a tempo, least-privilege (scopes minimi).
SSO: Spark usa l’SSO aziendale; per RLS si passa l’identità/filtri in embed token.
Cifratura in transito/a riposo, audit log su accessi e chiamate API.
Mappature chiave
| Campo Power BI / Report | Campo Spark | Tipo | Note |
|---|---|---|---|
| RLS Username / EffectiveIdentity | user.email | string | applica RLS per utente |
| RLS Role (es. CostCenterViewer) | user.cost_center | enum | mappa ruolo in base al cost center |
Parametro OrgUnit | user.org_unit | string | filtro pre-applicato all’apertura |
Dataset col. objective_id | objective.id | string | chiave per join |
Dataset col. period | kpi.period | string | es. 2025-Q4 |
Dataset col. payout_eur | payout.amount | number | export Spark→Power BI (read-only) |
Endpoints / API
Embed token:
POST /groups/{groupId}/reports/{reportId}/GenerateTokenDataset (push rows):
POST /datasets/{datasetId}/tables/{table}/rowsRefresh:
POST /datasets/{datasetId}/refreshes• Stato:GET /datasets/{datasetId}/refreshes
(Usa gli endpoint REST Power BI v1.0/myorg; link alla doc del tuo tenant, se disponibile.)
Direzione, frequenza, limiti
Direzione: Pull (Power BI → Spark, embed) + Push (opz.) (Spark → Power BI, dataset).
Frequenza: embed real-time; refresh dataset notturno o ogni 15’ (se necessario).
Rate limits/quote: applicano i limiti Power BI; usa batch/paginazione e retry/backoff su 429.
Limitazioni & note
Embed di report: editing in Spark non supportato (view-only).
RLS richiede definizione ruoli nel dataset e mapping in Spark.
Push dataset: dimensione righe e chiamate soggette a quote; consigliato batch.
Per DirectQuery/SSO pass-through servono prerequisiti del connettore (opzionale / non disponibile in Spark).
Troubleshooting rapido
AADSTS50011 (redirect errato): controlla Redirect URI dell’app Entra ID.
403 “Power BI access not allowed”: abilita “service principals” e assegna il SP al workspace.
404 report/dataset: verifica
groupId/reportId/datasetId.429 throttling: riduci burst, abilita retry esponenziale, sposta i job fuori punta.
RLS non applicata: controlla EffectiveIdentity/username e ruoli del dataset.
FAQ
È bidirezionale? Embed è pull da Power BI; l’export Spark→Power BI è push su dataset (read-only).
Quanto impiega il primo setup? Embed è immediato; export dataset 5–15 min (primo carico).
Come gestite i duplicati? Chiave composta
objective_id+period; Spark invia upsert/troncamento tabella secondo policy scelta.








