Aan de slag met Power BI voorbeeld werkruimteverzamelingen

Met Microsoft Power BI Werkruimteverzamelingen kunt u Power BI rapporten rechtstreeks integreren in uw web- of mobiele toepassingen. In dit artikel maakt u kennis met het voorbeeld Power BI Werkruimteverzamelingen aan de slag.

Belangrijk

Power BI Workspace Collections is afgeschaft en is beschikbaar tot juni 2018 of tot de datum die in uw contract wordt aangegeven. Om onderbreking van uw toepassing te voorkomen, wordt u geadviseerd om een migratie naar Power BI Embedded te plannen. Voor meer informatie over het migreren van gegevens naar Power BI Embedded raadpleegt u How to migrate Power BI Workspace Collections content to Power BI Embedded (Inhoud van Power BI-werkruimteverzamelingen migreren naar Power BI Embedded).

Voordat we verdergaan, wilt u de volgende resources opslaan: ze helpen u bij het integreren van Power BI rapporten in de voorbeeld-app en uw eigen apps.

Notitie

Voordat u het voorbeeld Power BI Werkruimteverzamelingen aan de slag kunt configureren en uitvoeren, moet u ten minste één werkruimteverzameling maken in uw Azure-abonnement. Zie Aan de slag met Power BI werkruimteverzamelingen voor meer informatie over het maken van een werkruimteverzameling in de Azure Portal.

De voorbeeld-app kunt configureren

We gaan uw Visual Studio ontwikkelomgeving instellen voor toegang tot de onderdelen die nodig zijn om de voorbeeld-app uit te voeren.

  1. Download en pak de Power BI werkruimteverzamelingen uit: integreer een rapport in een voorbeeld van een web-app op GitHub.

  2. Open PowerBI-embedded.sln in Visual Studio. Mogelijk moet u de opdracht Update-Package uitvoeren in de NuGet Pakketbeheer Console om de pakketten bij te werken die in deze oplossing worden gebruikt.

  3. Bouw de oplossing.

  4. Voer de ProvisionSample-console-app uit. In de voorbeeldconsole-app richt u een werkruimte in en importeert u een PBIX-bestand.

  5. Als u een nieuwe werkruimte wilt inrichten, selecteert u optie 1, Verzamelingsbeheer en selecteert u vervolgens optie 6, Een nieuwe werkruimte inrichten

  6. Als u een nieuw rapport wilt importeren, selecteert u optie 2, rapportbeheer en selecteert u vervolgens optie 3, PBIX Desktop-bestand importeren in een werkruimte.

  7. Voer de naam van uw werkruimteverzameling en de toegangssleutel in. U kunt deze in de Azure Portal krijgen. Zie API van Power BI toegangssleutels weergeven in Aan de slag met Microsoft Power BI Embedded voor meer informatie over het verkrijgen van uw toegangssleutel.

    Access keys within Azure portal

  8. Kopieer en sla de zojuist gemaakte werkruimte-id op om verderop in dit artikel te gebruiken. Nadat de werkruimte-id is gemaakt, kunt u deze vinden in de Azure Portal.

    Workspace ID within Azure portal

  9. Als u een PBIX-bestand wilt importeren in uw werkruimte, selecteert u optie 6. PBIX Desktop-bestand importeren in een bestaande werkruimte. Als u geen PBIX-bestand bij de hand hebt, kunt u het PBIX-voorbeeld van een retailanalyse downloaden.

  10. Voer een beschrijvende naam in voor uw gegevensset als u hierom wordt gevraagd.

U ziet een antwoord dat er ongeveer als volgt uitziet:

Checking import state... Publishing
Checking import state... Succeeded

Notitie

Als uw PBIX-bestand directe queryverbindingen bevat, voert u optie 7 uit om de verbindingsreeksen bij te werken.

Op dit moment hebt u een Power BI PBIX-rapport geïmporteerd in uw werkruimte. Laten we nu eens kijken hoe u de Power BI werkruimteverzamelingen kunt uitvoeren om aan de slag te gaan met voorbeeldweb-app.

De voorbeeld-web-app uitvoeren

Het voorbeeld van de web-app is een voorbeeldtoepassing waarmee rapporten worden weergegeven die zijn geïmporteerd in uw werkruimte. U kunt als volgt het voorbeeld van de web-app configureren.

  1. Klik in de oplossing PowerBI embedded Visual Studio met de rechtermuisknop op de embedSample-webtoepassing en kies Instellen als opstartproject.

  2. Bewerk in web.configin de embedSample-webtoepassing de appSettings: AccessKey, workspaceCollection-naam en WorkspaceId.

    <appSettings>
        <add key="powerbi:AccessKey" value="" />
        <add key="powerbi:ApiUrl" value="https://api.powerbi.com" />
        <add key="powerbi:WorkspaceCollection" value="" />
        <add key="powerbi:WorkspaceId" value="" />
    </appSettings>
    
  3. Voer de EmbedSample-webtoepassing uit.

Zodra u de EmbedSample-webtoepassing hebt uitgevoerd, moet het linkernavigatievenster een menu Rapporten bevatten. Als u het rapport wilt weergeven dat u hebt geïmporteerd, vouwt u Rapporten uit en klikt u op een rapport. Als u het PBIX-voorbeeld van een retailanalyse hebt geïmporteerd, ziet de voorbeeldweb-app er als volgt uit:

Sample left nav within sample application

Nadat u op een rapport hebt geklikt, moet de EmbedSample-webtoepassing er als volgt uitzien:

Sample report displaying within application

De voorbeeldcode verkennen

Het voorbeeld van Microsoft Power BI Werkruimteverzamelingen is een voorbeeld van een web-app die laat zien hoe u Power BI rapporten integreert in uw app. Het maakt gebruik van een MVC-ontwerppatroon (Model-View-Controller) om best practices te demonstreren. In deze sectie worden delen van de voorbeeldcode gemarkeerd die u kunt verkennen in de in PowerBI ingesloten web-app-oplossing . Het MVC-patroon (Model-View-Controller) scheidt de modellering van het domein, de presentatie en de acties op basis van gebruikersinvoer in drie afzonderlijke klassen: Model, Weergave en Besturingselement. Zie Meer informatie over ASP.NET voor meer informatie over MVC.

De voorbeeldcode microsoft Power BI werkruimteverzamelingen wordt als volgt gescheiden. Elke sectie bevat de bestandsnaam in de oplossing PowerBI-embedded.sln, zodat u eenvoudig de code in het voorbeeld kunt vinden.

Notitie

Deze sectie is een samenvatting van de voorbeeldcode die laat zien hoe de code is geschreven. Als u het volledige voorbeeld wilt bekijken, laadt u de powerBI-embedded.sln-oplossing in Visual Studio.

Model

Het voorbeeld heeft een ReportsViewModel en ReportViewModel.

ReportsViewModel.cs: vertegenwoordigt Power BI Rapporten.

public class ReportsViewModel
{
    public List<Report> Reports { get; set; }
}

ReportViewModel.cs: vertegenwoordigt een Power BI rapport.

public class ReportViewModel
{
    public IReport Report { get; set; }

    public string AccessToken { get; set; }
}

Verbindingsreeks

De connection string moet de volgende indeling hebben:

Data Source=tcp:MyServer.database.windows.net,1433;Initial Catalog=MyDatabase

Het gebruik van algemene server- en databasekenmerken mislukt. Bijvoorbeeld: Server=tcp:MyServer.database.windows.net,1433;Database=MyDatabase,

Weergave

De weergave beheert de weergave van Power BI Rapporten en een Power BI Rapport.

Reports.cshtml: Iterate over Model.Reports om een ActionLink te maken. De ActionLink bestaat als volgt:

Onderdeel Description
Titel Naam van het rapport.
QueryString Een koppeling naar de rapport-id.
<div id="reports-nav" class="panel-collapse collapse">
    <div class="panel-body">
        <ul class="nav navbar-nav">
            @foreach (var report in Model.Reports)
            {
                var reportClass = Request.QueryString["reportId"] == report.Id ? "active" : "";
                <li class="@reportClass">
                    @Html.ActionLink(report.Name, "Report", new { reportId = report.Id })
                </li>
            }
        </ul>
    </div>
</div>

Report.cshtml: Stel het Model.AccessToken en de Lambda-expressie voor PowerBIReportFor in.

@model ReportViewModel

...

<div class="side-body padding-top">
    @Html.PowerBIAccessToken(Model.AccessToken)
    @Html.PowerBIReportFor(m => m.Report, new { style = "height:85vh" })
</div>

Controller

DashboardController.cs: Hiermee maakt u een PowerBIClient die een app-token doorgeeft. Er wordt een JSON Web Token (JWT) gegenereerd op basis van de ondertekeningssleutel om de referenties op te halen. De referenties worden gebruikt om een exemplaar van PowerBIClient te maken. Zodra u een exemplaar van PowerBIClient hebt, kunt u GetReports() en GetReportsAsync() aanroepen.

CreatePowerBIClient()

private IPowerBIClient CreatePowerBIClient()
{
    var credentials = new TokenCredentials(accessKey, "AppKey");
    var client = new PowerBIClient(credentials)
    {
        BaseUri = new Uri(apiUrl)
    };

    return client;
}

ActionResult Reports()

public ActionResult Reports()
{
    using (var client = this.CreatePowerBIClient())
    {
        var reportsResponse = client.Reports.GetReports(this.workspaceCollection, this.workspaceId);

        var viewModel = new ReportsViewModel
        {
            Reports = reportsResponse.Value.ToList()
        };

        return PartialView(viewModel);
    }
}

TaskActionResult<> Report(string reportId)

public async Task<ActionResult> Report(string reportId)
{
    using (var client = this.CreatePowerBIClient())
    {
        var reportsResponse = await client.Reports.GetReportsAsync(this.workspaceCollection, this.workspaceId);
        var report = reportsResponse.Value.FirstOrDefault(r => r.Id == reportId);
        var embedToken = PowerBIToken.CreateReportEmbedToken(this.workspaceCollection, this.workspaceId, report.Id);

        var viewModel = new ReportViewModel
        {
            Report = report,
            AccessToken = embedToken.Generate(this.accessKey)
        };

        return View(viewModel);
    }
}

Een rapport integreren in uw app

Zodra u een rapport hebt, gebruikt u een IFrame om het Power BI Rapport in te sluiten. Hier volgt een codefragment uit powerbi.js in het voorbeeld Werkruimteverzamelingen van Microsoft Power BI.

init: function() {
    var embedUrl = this.getEmbedUrl();
    var iframeHtml = '<iframe style="width:100%;height:100%;" src="' + embedUrl + 
        '" scrolling="no" allowfullscreen="true"></iframe>';
    this.element.innerHTML = iframeHtml;
    this.iframe = this.element.childNodes[0];
    this.iframe.addEventListener('load', this.load.bind(this), false);
}

Rapporten filteren die zijn ingesloten in uw toepassing

U kunt een ingesloten rapport filteren met behulp van een URL-syntaxis. Hiervoor voegt u een $filter querytekenreeksparameter met een eq-operator toe aan uw iFrame src-URL met het opgegeven filter. Dit is de syntaxis van de filterquery:

https://app.powerbi.com/reportEmbed
?reportId=d2a0ea38-...-9673-ee9655d54a4a&
$filter={tableName/fieldName}%20eq%20'{fieldValue}'

Notitie

{tableName/fieldName} mag geen spaties of speciale tekens bevatten. De {fieldValue} accepteert één categorische waarde.

Zie ook

Veelvoorkomende scenario's voor microsoft Power BI werkruimteverzameling
Authenticating and authorizing in Power BI Workspace Collections (Verifiëren en autoriseren in Power BI Workspace Collections)
Een rapport insluiten
Een nieuw rapport maken op basis van een gegevensset
Power BI Desktop
Voorbeeld van Insluiten in JavaScript

Hebt u nog vragen? Misschien dat de Power BI-community het antwoord weet