2016-02-22 49 views
17

Nella mia applicazione sto visualizzando un report di Power BI. Funziona già, quindi non ci sono problemi con la visualizzazione di qualsiasi report dal suo ID (guid).Passaggio dei parametri al filtro Power BI a livello di programmazione

Ma ci sono alcune segnalazioni che devono essere parametrizzate, ad esempio, con l'anno corrente o la persona che visualizza il rapporto. Questa è la mia domanda: come si fa?

Per essere più specifici, sto incorporando il report all'interno dell'elemento HTML . Ho impostato l'URL iframe su un URL ricevuto dalla definizione del report embedUrl (ricevuto dall'API REST). Lo sto controllando tramite il codice JavaScript che chiama postMessage().

Relazione definizione:

{ 
    "id":"12345678-6418-4b47-ac7c-f8ac7791a0aa", 
    "name":"Retail Analysis Sample", 
    "webUrl":"https://app.powerbi.com/reports/12345678-6418-4b47-ac7c-f8ac7791a0aa", 
    "embedUrl":"https://app.powerbi.com/reportEmbed?reportId=12345678-6418-4b47-ac7c-f8ac7791a0aa" 
} 

codice JavaScript per carichi alla relazione:

function onFrameLoaded() { 
    var m = { 
     action: "loadReport", 
     reportId: reportId, 
     accessToken: accessToken 
    }; 

    iframe.contentWindow.postMessage(JSON.stringify(m), "*"); 
} 

Ora mi nutro per filtrare il report da un parametro dalla mia applicazione personalizzata. C'è un modo per inviare o passare un valore per filtrare il set di dati nel report?

+0

Eventuali duplicati di [POWER BI Codice URL-filtri multipli] (http://stackoverflow.com/questions/37943885/power-bi-embed- url-multipl e-filters) –

+2

Come potrebbe essere un duplicato di una domanda posta più tardi e con preoccupazioni diverse? –

risposta

23

Prima di tutto, il filtro deve essere definito nel report, quindi l'utente può impostarlo manualmente.

Esistono due modi per passare i parametri (quindi impostare il filtro) al report di Power BI da una fonte esterna.

a) Di Alimentazione BI Application

È possibile specificare il filtro impostando filter parametro nell'URL relazione (nella barra degli indirizzi del browser). Il parametro prende interrogazione filtro personalizzato:

https://app.powerbi.com/groups/me/reports/12345678-6418-4b47-ac7c-f8ac7791a0a7?filter=Store/PostalCode eq '15012'

dove "12345678-6418-4b47-ac7c-f8ac7791a0a7" è un rapporto id e "Store" è un set di dati, e PostalCode è un parametro da filtrare. "eq" è un operatore di uguaglianza.

URL deve essere codificato, url in modo finale assomiglia a questo:

https://app.powerbi.com/groups/me/reports/12345678-6418-4b47-ac7c-f8ac7791a0a7?filter=Store/PostalCode%20eq%20%2715012%27

b) il parametro JavaScript sendMessage oDataFilter

JavaScript (lato client browser) controlla il report BI caricato da postMessage() chiama con parametri (proprio come nella domanda sopra). È disponibile un'opzione aggiuntiva oDataFilter che può essere impostata per filtrare il rapporto.

Set in questo modo: oDataFilter: "Store/PostalCode eq '15012'"

codice completo sarebbe simile a questa:

function onFrameLoaded() { 
    var m = { 
     action: "loadReport", 
     reportId: reportId, 
     accessToken: accessToken, 
     oDataFilter: "Store/PostalCode eq '15012'" 
    }; 

    iframe.contentWindow.postMessage(JSON.stringify(m), "*"); 
} 

Osservazioni

  • Non ci deve essere alcun punti nei parametri di filtro (origine dati o nome parametro) poiché il codice Power BI lo rifiuta in modo invisibile come nomi non validi;
+0

buon esempio e spiegazione, grazie andrew. – Mostafa

+0

È possibile utilizzare questo approccio per filtrare i dati in base a un ID utente? Ad esempio, diciamo che ho 50 utenti con permessi diversi sui dati che possono vedere. Ad esempio, se utilizzo DirectConnect per il server SQL, posso utilizzare l'approccio dei parametri solo per visualizzare/nascondere i dati che l'utente può visualizzare? – Markive

+2

@Markive: non in modo sicuro; potresti semplicemente passare UserId come filtro, ma l'utente può cancellarlo. Con questo requisito è possibile che Power BI non sia un modo per andare per te. In Power BI è necessario pubblicare report diversi per ciascun account utente (che utilizzano query diverse). –

4

Microsoft ha creato un client powerbi con il quale è possibile eseguire molto più che applicare un solo filtro. È possibile applicare i filtri che si desidera e si può anche scegliere la pagina di default, filtri predefiniti, nascondere riquadro dei filtri, nascondere le pagine di navigazione, ecc

È possibile trovare il client qui: https://microsoft.github.io/PowerBI-JavaScript/

Ecco un applicazione demo: https://microsoft.github.io/PowerBI-JavaScript/demo/index.html

Ecco la documentazione: https://github.com/Microsoft/PowerBI-JavaScript/wiki