Power BI-oversigt og kantet indlejring Sådan gøres det

En kort oversigt over Microsofts Power BI-datavisualiseringstjeneste og trin til at integrere en Power BI-rapport i en vinklet webapplikation.

Uddrag fra Microsofts Power BI-side: Power BI er en pakke med forretningsanalyseværktøjer, der leverer indsigt i hele din organisation. Opret forbindelse til hundreder af datakilder, forenkle datapræparat og kør ad ad hoc-analyse. Fremstil smukke rapporter, og udgiv dem derefter til din organisation, så de kan forbruges på nettet og på tværs af mobile enheder. Alle kan oprette personaliserede dashboards med en unik 360-graders udsigt over deres forretning. Og skala på tværs af virksomheden med styring og sikkerhed indbygget.

Der er flere måder at få adgang til Power BI-rapporter på:

  • Power BI-service (webportal: app.powerbi.com).
  • Power BI desktop applikation.
  • Power BI-integrerede rapporter.
  • Mere… (uden for denne artikels rækkevidde)

I denne artikel integrerer vi Power BI-rapporter i vores Angular-klientapplikation. Dette giver os følgende fordele:

  • Brugeren behøver ikke at vide eller bekymre sig om teknologien bag rapporterne. Rapporterne vises som en del af webapplikationen.
  • Brugeren har ikke brug for en Power BI-konto.

Power BI Angular Library

Jeg har udgivet et Power BI Embedding-bibliotek til Angular 6+. Biblioteket kan installeres ved hjælp af følgende kommando:

npm installere ngx-powerbi

Her er de relevante links:

Mere information om biblioteket: https://medium.com/@ramandeep.singh.1983/ngx-powerbi-a-basic-typescript-wrapper-library-for-power-bi-b056150b3f25

NPM: https://www.npmjs.com/package/ngx-powerbi

GitHub: https://github.com/ramandeep-singh-1983/ngx-powerbi

Power BI-konti

Power BI leverer gratis, pro og en premium version af deres service. Til vores brugssag er vi bekymrede over følgende tilbud:

  • Power BI Pro: Dette er en brugerbaseret licens. Dette er påkrævet for at få adgang til Power BI-integrerede API'er og kontroller. Gratis v / s Pro-kontosammenligning kan findes her: https://docs.microsoft.com/en-us/power-bi/service-free-vs-pro.
  • Power BI Premium: Dette er en kapacitetsbaseret licens, der er tilgængelig for Power BI-rapporter, så større datamængder kan håndteres og en bred distribution af indhold kan opnås. Detaljer kan findes her: https://docs.microsoft.com/en-us/power-bi/service-premium.

Til vores udviklingsformål har vi kun brug for en Power BI Pro-konto. Premium-konto vil være påkrævet under produktionsinstallationen.

Ofte stillede spørgsmål om Power BI

Kilde: https://docs.microsoft.com/en-us/power-bi/service-premium-faq. Nogle relevante ofte stillede spørgsmål er vist her:

Hvad er Power BI Premium?

Power BI Premium er et nyt kapacitetsbaseret tilbud, der inkluderer:

  • Fleksibilitet til at offentliggøre rapporter bredt på tværs af en virksomhed uden at kræve, at modtagere er licenseret individuelt pr. Bruger.
  • Større skala og ydeevne fra dedikeret kapacitet i Power BI-tjenesten.
  • Muligheden for at vedligeholde BI-aktiver lokalt med Power BI Report Server.
  • Én API-overflade, et konsistent sæt af muligheder og adgang til de nyeste funktioner til integreret analyse.

Har jeg brug for Power BI Pro for at bruge Power BI Premium?

Ja. Power BI Pro kræves for at offentliggøre rapporter, dele dashboards, samarbejde med kolleger i arbejdsområder og deltage i andre relaterede aktiviteter.

Har jeg mulighed for at returnere mine Power BI Pro-licenser, hvis jeg vil skifte til Power BI Premium?

Nej. Power BI Premium er en tilføjelse til Power BI Pro; Premium kræver derfor Pro-licenser.

Power BI-kontosammendrag

Fra den tilgængelige dokumentation og ofte stillede ofte stillede spørgsmål, kan vi sammenfatte følgende Power BI-kontokrav:

  • En Power BI Pro-konto under udvikling.
  • En organisationsdækkende Power BI Premium-konto og en enkelt Power BI Pro-konto til produktionsudgivelse.

Indlejring af scenarier

Der er to måder, hvorpå en Power BI-rapport kan integreres i en applikation:

  • Integrering til din organisation: Bruger ejer data: Brugere har brug for deres egen Power BI-konto for at få adgang til rapporterne.
  • Integrering til dine kunder: App ejer data: Brugere har ikke brug for en Power BI-konto.

Til vores brugssag følger vi flowet "App ejer data". Vi integrerer en Power BI-rapport i en vinkel applikation, og slutbrugerne har ikke brug for en Power BI-licens for at få adgang til den.

Trin-for-trin-guide: Indlejring af en Power BI-rapport i en vinkel applikation

Power BI-rapporter kan indlejres i enhver form for applikation ved hjælp af det givne REST API, JavaScript-bibliotek, C # SDK osv. I vores scenario bruger vi JavaScript-biblioteket og en 3. parts vinkelkomponent til at integrere en Power BI-rapport i en vinkel baseret webapplikation.

Power BI-konto og applikationsopsætning

  1. Azure Active Directory-lejer er påkrævet for at integrere elementer fra Power BI.
  2. Opret en Power BI Pro-konto: En organisation-login-konto er nødvendig for dette, så alle offentlige e-mail-domæner (f.eks. Gmail, yahoo osv.) Ikke fungerer.
  3. Registrer en applikation til Power BI ved hjælp af dette link: https://dev.powerbi.com/apps. Flere detaljer findes her: https://docs.microsoft.com/en-us/power-bi/developer/register-app. Angiv følgende:
en. App-navn.
b. Apptype: skal være “Native app”, da vi integrerer indhold til vores kunder.
c. Omdiriger URL.
d. API-tilladelser.

4. Klik på knappen "Registrer app". Det opretter en ny app og registrerer den under din Azure Active Directory-lejer med de krævede tilladelser.

5. Giv tilladelser til appen i Azure Active Directory-indstillinger på Azure portal:

en. Gå til Azure Portal.
b. Find Azure Active Directory> Appregistreringer> Applikation> Indstillinger> Krævede tilladelser: Sørg for, at appen har adgang til følgende:
jeg. Windows Azure Active Directory
ii. Power BI Service (Power BI): validerer de tilgængelige tilladelser til appen
c. Klik på knappen "Giv tilladelser" under afsnittet Krævede tilladelser. Dette er et vigtigt trin, og indlejring fungerer ikke uden at klikke på knappen Tilladelsestilladelser.
d. Noter appens applikations-id i Azure-portalen. Dette kræves for at få Azure AD-adgangstoken senere.

Opret en prøve Power BI-rapport

  1. Naviger til Power BI-serviceportalen (https://app.powerbi.com). Opret et app-arbejdsområde under afsnittet med arbejdsområder, og tilføj en prøve Power BI-rapport under fanen Rapporter i app-arbejdsområdet. Power BI-rapporten kan være en .pbix-fil genereret fra Power BI-skrivebordsprogram. Et app-arbejdsområde er også kendt som gruppe i Power BI. (Henvisningsartikel: https://docs.microsoft.com/da-us/power-bi/developer/embedding-content#create-app-workspaces).
  2. Åbn rapporten i Power BI-serviceportal, og gem URL-adressen fra browserens placeringslinje. URL-adressen indeholder vigtige data, der kræves for at få adgang til rapporterne i vores webapp senere. Webadressen har følgende form:
en. URL: https://app.powerbi.com/groups/30c614f2-ca7e-4f75-aa86-9ce1cc4f156a/reports/63b91fa2-f2cc-4f0e-9879-2534b8157153/ReportSection
b. Gruppe-id eller arbejdsområde-id fra ovennævnte URL (markeret med BOLD): https://app.powerbi.com/groups/30c614f2-ca7e-4f75-aa86-9ce1cc4f156a/reports/63b91fa2-f2cc-4f0e-9879-2534b8157153/ReportSection
c. Rapport-id fra ovennævnte URL (markeret med BOLD): https://app.powerbi.com/groups/30c614f2-ca7e-4f75-aa86-9ce1cc4f156a/reports/63b91fa2-f2cc-4f0e-9879-2534b8157153/ReportSection
d. Gem gruppen og rapport-idet fra URL'en.

Rapport-id og gruppe-id er ikke tilgængelige overalt i Power BI-serviceportalen, så vi er nødt til at hente den fra URL-adressen som nævnt ovenfor.

3. Nu kan vi bruge Power BI JavaScript-biblioteket eller REST API'er leveret af Microsoft til at integrere vores rapporter i en webapplikation.

Integrer Power BI-rapporten i en vinklet webapplikation

  1. Power BI JavaScript-biblioteket eller REST API'er giver en måde at integrere Power BI-rapporterne i en applikation. Inden vi kan få adgang til disse API'er, skal vi autentificere applikationen ved hjælp af adgangstoken på Power BI Pro-kontoen, som vi brugte til at registrere vores app og oprette et app-arbejdsområde. Denne godkendelse er ikke en del af de leverede API'er, og vi har brug for en separat mekanisme til at hente adgangstoken til vores webapp.

2. Bevis for koncepter: Der er oprettet 2 prøve-POC'er for at demonstrere de indbyggede Power BI-rapporter i en vinklet webapplikation. POC'erne kan findes her: https://github.com/ramandeep-singh-1983/powerbi-embedded-poc. POC'erne er temmelig rudimentære og er netop blevet tilføjet for at vise et grundlæggende arbejdseksempel på indlejrede Power BI-rapporter. Ovennævnte depot indeholder følgende POC'er:

poc1: ved hjælp af et gratis tilgængeligt 3-parts vinkelbibliotek: https://github.com/diego-d5000/PowerBI-Angular2
poc2: ved hjælp af officielt JavaScript-bibliotek leveret af Microsoft: https://github.com/Microsoft/PowerBI-JavaScript

3. Begge POC'er kræver et adgangstoken, rapport-id og indlejret URL som input:

en. Integrer URL og rapport-id: https://app.powerbi.com/reportEmbed?reportId=63b91fa2-f2cc-4f0e-9879-2534b8157153&groupId=30c614f2-ca7e-4f75-aa86-9ce1cc4f156a. Udskift disse med det korrekte rapport-id og gruppe-id opnået fra Power BI-serviceportalen.
b. Adgangstoken: Dette forklares nedenfor. Vi er nødt til at køre eksempelprogrammet leveret af Microsoft eller oprette vores eget program, der henter adgangstokenet fra Azure AD.

4. Kør apps ved hjælp af følgende kommandoer fra poc root-mapperne:

en. npm installation: dette installerer alle nødvendige afhængigheder for applikationen.
b. ng serve -o: dette vil køre appen og starte en browserinstans til http: // localhost: 4200, og så skal du være i stand til at se de integrerede rapporter.
Eksempel på POCs depot-URL: https://github.com/ramandeep-singh-1983/powerbi-embedded-poc.

Generer adgangstokens til Power BI-tjenesten

Den applikation, vi oprettede via Power BI-konvektionsportalen (https://dev.powerbi.com/apps), findes i vores Azure AD og for at få adgang til nogen af ​​Power BI API'erne, har vi brug for et adgangstoken:

  1. Microsoft har leveret en dejlig prøve (https://github.com/Microsoft/PowerBI-Developer-Samples/tree/master/App%20Owns%20Data), der indeholder kode til hentning af adgangstoken ved hjælp af Power BI Pro-kontooplysninger. Adgangstoken bruges derefter til at integrere en Power BI-rapport i en webapplikation.
  2. For at se en indlejret rapport, betjeningspanel eller flise, skal følgende oplysninger udfyldes i projektets web.config:
en. clientId - Id for AAD-applikation, der er registreret som en NATIVE-app. Dette er applikations-id fra Azure-portalen, som vi noterede tidligere.
b. groupId - gruppe- eller arbejdsområde-id i Power BI, der indeholder rapporter, dashboards og fliser, vi vil indlejre.
c. pbiUsnavn - Power BI-brugernavn (f.eks. e-mail). Skal være administrator af gruppen ovenfor.
d. pbiPassword - adgangskode til Power BI-bruger ovenfor.

3. Få adgangstoken:

en. Kør applikationen, søg og sæt et breakpoint i den følgende linje inden for EmbedReport-funktionen:
var tokenCredentials = nye TokenCredentials (autentificeringResult.AccessToken, "bærer");
b. Klik på indstillingen "Integrer rapport" i brugergrænsefladen
c. Det punkt, vi tilføjede, vil blive ramt, gemme værdien af ​​authenticationResult.AccessToken og give denne værdi i de 2 POC-applikationer ovenfor.

4. Kør POC-applikationer, og du skal kunne se den integrerede Power BI-rapport.

Azure AD-adgangstokens er gyldige i en begrænset periode (1 time som standard) og skal fornyes inden udløbet. Detaljer kan findes her: https://docs.microsoft.com/en-us/azure/active-directory/ aktiv-mappe-konfigurerbare-token-levetider

Opdatering: Jeg har oprettet en GitHub-kerne af backend-koden til generering af adgangstoken. Denne kode kontrollerer, om det aktuelle token er gyldigt og returnerer det samme, ellers genererer det et nyt token. Gæstelinket er her:
https://gist.github.com/ramandeep-singh-1983/0350b22130884ecefdb54f41a92ba232

Referencer

https://docs.microsoft.com/en-us/power-bi/developer/embedding

https://docs.microsoft.com/en-us/power-bi/developer/embedding-content

https://docs.microsoft.com/en-us/power-bi/developer/embed-sample-for-customers

https://github.com/Microsoft/PowerBI-Developer-Samples