Press "Enter" to skip to content

Un tip su Power BI Report Server on Prem

Ho iniziato da poco a lavorare con Power BI Report server nella versione on premise e la versione precedente all’attuale era stata piuttosto deludente, principalmente per l’assenza della possibilità di appoggiare direttamente il report sui dati in modo che aggiornando i dati il report sia automaticamente aggiornato. La modalità del report che si importa i dati e li tiene al suo interno è sicuramente pratica per poter archiviare una dashboard a perenne memoria e poterla riaprire e giocarci in qualsiasi momento. Ma ci sono dei report importantissimi a livello aziendale più vicino alla produzione che non necessitano di essere salvati ma invece necessitano di rispecchiare sempre i dati aggiornati puntualmente. Ecco perché la nuova versione di Power BI Report Server che permette le Direct Query su DB è stata una gradita novità della nuova versione installata a Marzo.
La parte di Direct Query non è implementata in modo semplice (come farei io sul mio db dove farei una vista oppure una semplice query con tutte le join necessarie) invece, Power BI Report Server permette esclusivamente una query “secca” su una singola tabella, a cui permette solo di aggiungere una serie di misure calcolate sui dati della tabella stessa dopo aver inserito la tabella in un report utilizzando Power BI Desktop. Pertanto prima di usare una direct query è necessario implementare un database di datalake e creare le tabelle di datawarehouse con tutti i dati necessari alla dashboard su una singola riga di tabella.
Ma se pure non esattamente sui dati reali, questo tipo di tabella può essere aggiornata da un job temporizzato che lancia una stored procedure mantenendo i dati aggiornati al minuto, e se più istanze della dashboard sono aperte su varie postazioni, ciascuna di esse può mostrare una serie di dati diversi usando filtri diversi sulla stessa tabella del DB tutti aggiornati quasi in tempo reale.
Detto ciò, nell’implementare i primi report oltre ad incappare nel problema, che non è realmente un problema, della singola tabella, ci siamo trovati a ricevere degli errori strani, ci abbiamo messo una settimana ad uscirne e quindi scrivo un post per ricordarmi della cosa e per dare una mano a chi eventualmente si trovasse ad avere la stessa problematica.

Dopo aver configurato il server Power BI, per poter effettuare la direct query ho dovuto indicare a Power BI di fidarsi del SqlServer dove risiedono i dati. Se il nome dell’Istanza di SqlServer e tutti i suoi alias non sono indicati come “trusted” a Power BI Report Server, vi potrete collegare a tale server, potrete fare un report di tipo “import”, potrete collegarlo in “direct query” quando usate Power BI Desktop per creare i report, ma dopo la pubblicazione del report, anche se la connessione dati risponde OK al test, quando aprite il report il server vi da un errore estremamente criptico che indica che Non gli è possibile collegarsi ad Analysis Server. Questo messaggio evidentemente molto sbagliato e su cui ovviamente non si trova documentazione se non fuorviante è quello che ci ha fatto perdere ore ore ed ore a provare in mille modi senza trovare una soluzione se non dopo una settimana.

Come Indicare a Power BI Report Server quali istanze di SqlServer sono Trusted per le Direct Query

Ecco come fare in modo che Power BI permetta le direct query sul vostro SQLServer.

Sulla macchina server che ospita Power BI Report Server. Aprite la ricerca di windows e iniziate a digitare “variabili” solitamente dopo un paio di lettere, nella lista appare l’icona sopra indicata.

Nella window che si apre cliccando sull’icona, cliccare il pulsante della gestione variabili di ambiente.

Nella sezione delle Variabili di Sistema dobbiamo aggiungere la variabile PBI_SQL_TRUSTED_SERVERS o, se esistesse già dobbiamo aggiungere alla variabile il nome dell’istanza e tutti i suoi alias se ve ne sono. Per aggiungere la variabile premiamo Nuova per modificarla premiamo Modifica.

Si apre la window qui sopra, nel valore della variabile inseriamo il nome dell’istanza di sql server e i suoi alias separati da virgole.
Ad esempio, il mio server si chiama srvsc01, e per l’accesso in rete gli ho dato un alias sql.mylocaldomain.local nella variabile indicherò:
srvsc01,sql.mylocaldomain.local
Se indicassi solo il nome dell’istanza di sql server (in questo caso essendo un istanza di default ha il nome del server) i report funzionerebbero solo indicando il nome server nella connection string, se invece per policy aziendale o per qualsivoglia necessità, volessi usare l’alias di sqlserver, se l’alias non fosse presente il report continuerebbe a dare errore.
Dopo questa modifica, consiglio di riavviare il server e di conseguenza riavviare Power BI. Se in futuro doveste aggiungere ulteriori istanze di SqlServer, o nuovi alias, modificate la variabile e riavviate Power BI (questo si fa dal Power BI Configuration manager.)