Lavora con Power BI Matrix prendendo i dati dall'istruzione DAX
Ho i seguenti requisiti:
- L'utente vedrà una matrice di Power BI su una pagina Web (al contrario di Power BI Desktop).
- La pagina Web dovrebbe avere tre elementi: un campo di testo, un pulsante e la matrice di Power BI (potenzialmente inclusa in un report di Power BI).
- L'utente inserirà l'istruzione DAX nel campo di testo e farà clic sul pulsante per indicare a Matrix di prendere l'istruzione DAX, eseguirla e popolare i dati.
- L'utente dovrebbe essere in grado di eseguire il drill-down in Matrix.
- L'utente può immettere nuovamente una nuova istruzione DAX, aggiornando Matrix.
Ora, tutta la documentazione che ho trovato, ad esempio qui , parla di Matrix in Power BI Desktop (cioè non di pagine web) e dei dati presi selezionando manualmente tabelle/colonne/misure (sul lato destro dello schermo).
In Power BI Studio, so che posso inserire un'istruzione DAX creando una tabella nella barra superiore, ad esempio se ho il DAX:
EVALUATE TOPN (3, branches)
Potrei creare una tabella per popolare Matrix con:
BranchesTable = TOPN (3, branches)
Ma come collegare dinamicamente una dichiarazione DAX definita in fase di esecuzione a una matrice su una pagina Web?
Risposte
Al momento non è possibile fare esattamente quello che vuoi. È possibile modificare dinamicamente un'origine dati e aggiornare la query usata in un report specifico, ma non è disponibile un'API (PowerBI REST o PowerBI JavaScript) per aggiornare le colonne presenti in un oggetto visivo in un report. Puoi avvicinarti abbastanza a ciò che desideri, ma il report non può essere visualizzato in View
modalità e dovrà essere visualizzato in Edit
modalità in modo che l'utente abbia la possibilità di trascinare manualmente i campi generati dai risultati della query DAX aggiornati nell'oggetto visivo Matrix se inviano una modifica.
Supponendo che tu abbia già completato l'impostazione e la configurazione della registrazione dell'app prerequisito e che tu sia pronto per l'incorporamento, ecco alcuni passaggi per avvicinarti a ciò che stai cercando. Se non sei pronto per l'incorporamento, c'è della documentazione sotto gli 8 passaggi che ho fornito per completare la configurazione dei prerequisiti per poter incorporare.
- Utilizzo di PowerBI Desktop Creare un report modello con un oggetto visivo matrice e una connessione all'origine dati che si desidera utilizzare. Assicurati di impostare questo rapporto utilizzando una query specifica e NON tutte le tabelle nell'origine dati, sia che si tratti di SQL o SSAS. (Specifici la query nelle opzioni avanzate quando imposti inizialmente l'origine dati nel rapporto)
- Configura un gateway dati di Power BI per l'origine dati utilizzata dal report
- Creare un'area di lavoro su PowerBI.com in cui caricare il report
- Utilizzo di PowerBI desktop Pubblicare il report creato nel passaggio 1 nell'area di lavoro creata nel passaggio 3
- Nell'applicazione Web, quando un utente visualizza la pagina del visualizzatore di report, è necessario un modo per identificare ciascun utente. Supponiamo che tu abbia un
UserId
campo che è un ID univoco per ogni utente. Chiama GetReports nel gruppohttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/getreportsingroup. È necessario disporre di un nome di report noto più l'ID utente. Supponiamo che sia DynamicReport. Quindi chiama GetReports e controlla seDynamicReport_UserId
esiste per l'utente che tenta di visualizzare la pagina del visualizzatore di report nella tua applicazione web. - In quanto le chiamate API derivano dal passaggio 5, se il report non esiste per un utente, utilizzarehttps://docs.microsoft.com/en-us/rest/api/power-bi/reports/clonereportper clonare il rapporto modello pubblicato nel passaggio 4.
- Incorpora e visualizza il rapporto modello specifico dell'utente (DynamicReport_UserId) per l'utente.
- Avere una logica nella pagina del visualizzatore di report in modo che l'utente possa inviare e
POST
una query DAX. Quando fanno un invio hanno una logica da usarehttps://docs.microsoft.com/en-us/rest/api/power-bi/datasets/updatedatasourcessul back-end per aggiornare l'origine dati nel report e quindi incorporare nuovamente il report con l'istruzione DAX e i dati modificati.
L'oggetto visivo non si aggiornerà automaticamente ai nuovi campi dalla nuova query inviata dall'utente, ma i campi dati disponibili che hanno in modalità editor cambieranno. L'utente dovrà trascinare e rilasciare i campi dalla query DAX nell'oggetto visivo Matrix o qualsiasi tipo di oggetto visivo che sceglierà di usare. Non sarai in grado di visualizzare solo un report in View
modalità poiché non hai un modo per aggiornare in modo programmatico quali campi sono su Visual. L'utente potrebbe persino finire per visualizzare inizialmente un oggetto visivo interrotto a causa della query modificata e dei campi di riferimento visivo della query utilizzata in precedenza. È possibile utilizzare l'API Javascript di PowerBI per nascondere l'oggetto visivo esistente per migliorare l'esperienza utente dell'utente che non vede qualcosa di rotto.
Fammi sapere se hai domande specifiche su queste chiamate API o su come utilizzarle.
Qui è dove ho cercato la funzionalità JavaScript di Power BIhttps://github.com/Microsoft/powerbi-javascript/wiki(Impossibile trovare nulla di specifico per Matrix Visuals. Funzionalità JavaScript per elementi visivi generici per Visuals e non Visual Type come Matrix o Card)
Ecco la documentazione di Microsoft sulle API REST disponibili ehttps://docs.microsoft.com/en-us/rest/api/power-bi/
Ecco alcune buone risorse per saperne di più sull'incorporamento
https://docs.microsoft.com/en-us/power-bi/developer/embedded/register-app https://docs.microsoft.com/en-us/power-bi/developer/embedded/embedding
Se hai bisogno di funzionalità di drill-down, le gerarchie sono un'ottima opzione
https://spreadsheeto.com/power-bi-hierarchy/