Integrazione Power BI

  • Home
  • Integrazione Power BI

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)

  1. 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.

  2. 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).

  3. 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 / ReportCampo SparkTipoNote
RLS Username / EffectiveIdentityuser.emailstringapplica RLS per utente
RLS Role (es. CostCenterViewer)user.cost_centerenummappa ruolo in base al cost center
Parametro OrgUnituser.org_unitstringfiltro pre-applicato all’apertura
Dataset col. objective_idobjective.idstringchiave per join
Dataset col. periodkpi.periodstringes. 2025-Q4
Dataset col. payout_eurpayout.amountnumberexport Spark→Power BI (read-only)

Endpoints / API

  • Embed token: POST /groups/{groupId}/reports/{reportId}/GenerateToken

  • Dataset (push rows): POST /datasets/{datasetId}/tables/{table}/rows

  • Refresh: POST /datasets/{datasetId}/refreshesStato: 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.