Erstellung erweiterter Berichte und Dashboards in .NET mit Microsoft-Power BI
Warum erweiterte Berichte in modernen .NET-Anwendungen wichtig sind
Zunächst klären wir auf, warum die Entwicklung erweiterter Berichte für moderne .NET-Anwendungen wichtig ist und weshalb Power BI dabei eine zentrale Rolle spielt. Traditionelle Lösungen liefern meist statische Berichte. Das bedeutet, dass die Daten nur teilweise informativ sind, weil Nutzer nicht damit interagieren, Details einsehen oder Informationen vollständig verstehen können. Dynamische Berichte bieten dagegen eine deutlich bessere Nutzererfahrung. Die Daten sind interaktiv, sodass Nutzer sie erkunden, Unterschiede erkennen sowie Zeiträume und Filter anpassen können.
Wenn man Daten zur Entscheidungsfindung, Datenverwaltung oder generell zur Verbesserung der betrieblichen Effizienz braucht, sind dynamische und interaktive Dashboards unerlässlich. In diesem Zusammenhang gehört Microsoft Power BI zu den robustesten, vollständigsten und zugleich benutzerfreundlichsten Lösungen. Die Plattform bietet ein umfassendes Toolset, mit dem sich Daten transformieren, komplexe Berechnungen durchführen und moderne, interaktive Berichte und Visualisierungen erstellen lassen. Dadurch können Nutzer sehr tiefe Einblicke in ihre Daten gewinnen.
Außerdem lässt sich eine Anwendung so automatisieren, dass sie mithilfe der Power-BI-Integration in Backend- und Frontend-Services Live-Daten aus der Cloud abruft. Das ist besonders hilfreich, da sich damit automatisierte Berichte und Echtzeit-Dashboards in eine .NET-Anwendung integrieren lassen. Diese können auf verschiedene Frontеnd-Bildschirme verteilt werden. Gleichzeitig kann bestimmt werden, welche Inhalte einzelne Nutzer sehen dürfen, wie Berechtigungen verwaltet werden oder wie Daten automatisch gefiltert werden. Dadurch eröffnen sich zahlreiche Einsatzmöglichkeiten für Dashboards. Unternehmen können Risiken im Geschäftsprozess reduzieren und zugleich eine datenorientierte Arbeitsweise fördern, die nachhaltiges Wachstum unterstützt. Wer also nach Lösungen für Reporting- und Dashboard-Entwicklung sucht, sollte diesen leistungsstarken Technologie-Stack genauer betrachten und prüfen, wie er bestehende Softwareprodukte modernisieren kann.
Power-BI-Integration in .NET-Anwendungen
Nachdem wir geklärt haben, wie wichtig Microsoft Power BI für die Erstellung dynamischer Dashboards und Berichte ist, stellt sich die Frage nach der Integration in .NET-Anwendungen. Zunächst ist wichtig zu wissen, dass Power BI eine REST-API bietet, mit der sich Dashboards verwalten und strukturieren lassen. Damit dient die Plattform auch als Grundlage für Dashboard-Entwicklung in .NET. Für die Authentifizierung in der Frontend-Anwendung wird in der Regel ein Service Principal verwendet, der über die offiziellen Power-BI-Bibliotheken und Entwicklungs-Kits in HTML eingebettet wird.
Ein wesentlicher Vorteil der Integration von Power BI in .NET-Anwendungen besteht darin, dass Dashboards direkt innerhalb der Anwendung angezeigt und genutzt werden können. Nutzer müssen die Anwendung nicht verlassen, um eine Präsentation auf der Plattform-Seite zu öffnen oder Inhalte beispielsweise in PowerPoint anzusehen. Stattdessen lassen sich Berichte unmittelbar in der Webanwendung anzeigen. Für Endnutzer ist das viel komfortabler. Gleichzeitig sieht die Anwendung moderner und interaktiver aus, was ihren Wert erhöht, insbesondere bei Softwarelösungen mit kostenpflichtigem Abonnement.
In diesem Zusammenhang sind jedoch strenge Sicherheits- und Authentifizierungsregeln entscheidend, um Datenlecks, unbefugte Weitergabe von Kundendaten oder mögliche rechtliche Probleme zu vermeiden. Daher sollte sorgfältig geplant werden, wie Authentifizierung umgesetzt wird, unter welchen Bedingungen Nutzer einzelne Grafiken sehen dürfen, wie Inhalte zwischen verschiedenen Kunden getrennt werden und wie Lizenzverletzungen verhindert werden können. Üblicherweise erfolgt die Authentifizierung über einen Service Principal. Im Backend wird anschließend festgelegt, welche Daten und Visualisierungen einzelne Kunden sehen können und wie der Zugriff darauf erfolgt. Diese Struktur ist entscheidend, um Unternehmensberichte mit .NET und Power BI sicher und verantwortungsvoll umzusetzen.
Echtzeit-Dashboards in .NET-Anwendungen
Es gibt verschiedene Möglichkeiten, die Daten eines Dashboards zu aktualisieren. Dies ist eine wichtige geschäftliche Entscheidung, da der Zeitpunkt der Datenaktualisierung bestimmt, welche Informationen der Nutzer sieht. Daher ist ein Echtzeit-Dashboard oft die beste Option. Allerdings ist dies nicht immer die optimale Lösung: Tatsächlich ist es nur selten empfehlenswert, Echtzeit-Dashboards in einer Anwendung zu implementieren, wie wir im Folgenden erläutern werden. Sehr häufig reicht es aus, die Daten nur einmal täglich oder nur einmal wöchentlich zu aktualisieren, je nach der Art des jeweiligen Diagramms
Das Problem ist, dass absolut echte Echtzeit-Dashboards in der Praxis heutzutage nicht existieren. Sie erfordern eine enorme Datenverarbeitung, zu viele gleichzeitige Datenbankverbindungen und permanente Lese- und Schreiboperationen, was die Rechen- und Speicherkapazitäten des Servers stark belastet. Selbst „Echtzeit“-Dashboards haben daher in der Regel eine kleine Verzögerung von etwa 5 bis 10 Sekunden bei der Aktualisierung.
Trotzdem sollte man die Anwendungsfälle betrachten, in denen ein Dashboard tatsächlich kontinuierliche Updates benötigt. Ein Diagramm, das die monatlichen Einnahmen eines Jahres zeigt, muss beispielsweise nicht alle fünf Sekunden aktualisiert werden – einmal pro Monat reicht es vollkommen aus. Wenn hingegen Logistiksysteme, Produktionsüberwachung, Warteschlangenmanagement usw. überwacht werden müssen, ist es notwendig, dass das Dashboard live ist und die Daten so aktuell wie möglich vorliegen. Dabei gilt: Diese Lösung sollte nur für Business-Intelligence-Anwendungen in .NET verwendet werden, wenn sie absolut erforderlich ist, da sich sonst große Datenmengen ansammeln und die Server und Systeme stark belasten.
Zur Integration in .NET-Datenvisualisierungstools gibt es verschiedene Ansätze, die oft parallel eingesetzt werden. Um die Frontend-Anwendung in Echtzeit zu aktualisieren, wenn sich Daten verändern, empfiehlt sich SignalR. Es informiert das Frontend über neue Kennzahlen und kann Daten auch per API in das Dataset übertragen. Um interaktive Berichte in .NET automatisch zu aktualisieren, sollte eine ereignisbasierte Architektur implementiert werden, etwa über Warteschlangen mit RabbitMQ oder Kafka. Wenn die Anwendung Echtzeitdaten dringend benötigt, empfiehlt sich der Einsatz von Datenströmen, um die CPU-Belastung zu minimieren, nur wenige Daten zu transformieren und kontinuierlich an das Dataset zu liefern. Dies hilft, Überlastungen und hohen CPU-Verbrauch zu vermeiden, die bei diesem Dashboard-Modell sonst auftreten würden.
Beispielcode: Integration eines Power-BI-Berichts in eine .NET-Anwendung
Um die zuvor beschriebenen Aspekte besser zu veranschaulichen, folgt ein kurzes Beispiel für die Integration von Power BI in eine ASP.NET-Core-Anwendung. In diesem Beispiel wird Power BI Embedded verwendet, um im Backend ein Embed Token zu erzeugen, das anschließend im Frontend gerendert wird.
NuGet-Pakete
Zunächst werden die offiziellen .NET-Pakete installiert, um Power BI und die zugehörigen Konfigurationen zu integrieren:
dotnet add package Microsoft.PowerBI.Api
dotnet add package Microsoft.Identity.Client
Power-BI-Token-Service (Backend)
Jetzt betrachten wir den zentralen Teil der Integration. Zuerst erfolgt die Authentifizierung über Azure AD, anschließend wird ein gültiges Token für einen bestimmten Bericht erzeugt. Dazu werden die Zugangsdaten aus der Konfigurationsdatei über _configuration gelesen. Danach wird ein Client erstellt, später ein Power-BI-Client initialisiert, und schließlich kann das Embed Token generiert und an das Frontend übermittelt werden.
PowerBIEmbeddingService.cs
using Microsoft.Identity.Client;
using Microsoft.PowerBI.Api;
using Microsoft.PowerBI.Api.Models;
using Microsoft.Rest;
public class PowerBIEmbeddingService
{
private readonly IConfiguration _configuration;
public PowerBIEmbeddingService(IConfiguration configuration)
{
_configuration = configuration;
}
public async Task<EmbedToken> GenerateEmbedTokenAsync(
Guid workspaceId,
Guid reportId)
{
var tenantId = _configuration["PowerBI:TenantId"];
var clientId = _configuration["PowerBI:ClientId"];
var clientSecret = _configuration["PowerBI:ClientSecret"];
var authority = $"https://login.microsoftonline.com/{tenantId}";
var scopes = new[] { "https://analysis.windows.net/powerbi/api/.default" };
var confidentialClient = ConfidentialClientApplicationBuilder
.Create(clientId)
.WithClientSecret(clientSecret)
.WithAuthority(authority)
.Build();
var authResult = await confidentialClient
.AcquireTokenForClient(scopes)
.ExecuteAsync();
var tokenCredentials = new TokenCredentials(authResult.AccessToken, "Bearer");
using var powerBiClient = new PowerBIClient(
new Uri("https://api.powerbi.com/"),
tokenCredentials);
var generateTokenRequest = new GenerateTokenRequest(
accessLevel: "view",
allowSaveAs: false);
return await powerBiClient.Reports
.GenerateTokenAsync(workspaceId, reportId, generateTokenRequest);
}
}
API-Controller zur Bereitstellung der Embed-Informationen
Dieser Controller erstellt einen Endpunkt für das Frontend. Er kann mit JWT, Cookies oder IdentityServer abgesichert werden, ohne dass vertrauliche Zugangsdaten offengelegt werden.
PowerBIController.ts
using Microsoft.AspNetCore.Mvc;
[ApiController]
[Route("api/powerbi")]
public class PowerBIController: ControllerBase
{
private readonly PowerBIEmbeddingService _embeddingService;
private readonly IConfiguration _configuration;
public PowerBIController(
PowerBIEmbeddingService embeddingService,
IConfiguration configuration)
{
_embeddingService = embeddingService;
_configuration = configuration;
}
[HttpGet("embed-info")]
public async Task<IActionResult> GetEmbedInfo()
{
var workspaceId = Guid.Parse(_configuration["PowerBI:WorkspaceId"]);
var reportId = Guid.Parse(_configuration["PowerBI:ReportId"]);
var embedUrl = _configuration["PowerBI:EmbedUrl"];
var embedToken = await _embeddingService
.GenerateEmbedTokenAsync(workspaceId, reportId);
return Ok(new
{
reportId,
embedUrl,
embedToken = embedToken.Token
});
}
}
Frontend (JavaScript – Power BI Client)
Hier wird dem HTML eine Skriptdatei hinzugefügt, die das offizielle Power-BI-SDK aufruft. Sie ist dafür zuständig, den Bericht im Frontend darzustellen und die benötigten Daten aus dem Backend abzurufen.
<script src="https://cdn.jsdelivr.net/npm/powerbi-client/dist/powerbi.min.js"></script>
<div id="reportContainer" style="height: 800px"></div>
<script>
async function loadReport() {
const response = await fetch("/api/powerbi/embed-info");
const data = await response.json();
const models = window["powerbi-client"].models;
const config = {
type: "report",
tokenType: models.TokenType.Embed,
accessToken: data.embedToken,
embedUrl: data.embedUrl,
id: data.reportId,
permissions: models.Permissions.Read,
settings: {
panes: {
filters: { visible: false },
pageNavigation: { visible: true },
},
},
};
const container = document.getElementById("reportContainer");
powerbi.embed(container, config);
}
loadReport();
</script>
appsettings.json (Beispiel)
Dies ist die Konfigurationsdatei, die in der lokalen Umgebung verwendet wird, um Zugangsdaten zu speichern. In einer Produktionsumgebung sollten diese Daten aus Azure Key Vault oder aus Umgebungsvariablen stammen, damit keine sensiblen Informationen offengelegt werden können.
{
"PowerBI": {
"TenantId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ClientId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ClientSecret": "YOUR_SECRET",
"WorkspaceId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"ReportId": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
"EmbedUrl": "https://app.powerbi.com/reportEmbed"
}
}
Das sind die Grundlagen für Reporting und Analytics in .NET und wie man sie sowohl im Frontend als auch im Backend einer bestehenden Anwendung implementiert. Auf dieser Basis können Sie Ihre Ideen erweitern und weitere Automatisierungen einbauen, etwa durch zusätzliche Endpunkte, weitere Seiten im Frontend oder je nach Anwendungsfall erforderliche Funktionen.
Fazit zum erweiterten Reporting in .NET-Anwendungen
Angesichts all dessen wird deutlich, wie wichtig Enterprise-Datenvisualisierung in .NET für moderne Webprodukte ist. Insbesondere dann, wenn es sich um eine Premium-Lösung handelt. Der Bereich Microsoft Power-BI-Beratung ist daher von großer Bedeutung für die Entwicklung moderner, datengetriebener Softwarelösungen und ist kein vorübergehender Trend, sondern ein dauerhafter Standard. Daher ist .NET die bevorzugte Technologie für die Integration mit Power BI: Beide sind Teil des Microsoft-Entwicklungsumfelds, sodass viele Bibliotheken und Development Kits die Integration der Tools erleichtern.
Sie sollten auch gründlich über die Aktualisierungsintervalle Ihres Dashboards nachdenken. Datenverarbeitung und -transformation belasten physische Server und Services stark. Wenn viele Kunden betreut werden und Daten für verschiedene Plattformen gespeichert werden müssen, summiert sich diese Belastung schnell. Dies kann die Performance Ihrer Anwendung und die Nutzererfahrung beeinträchtigen, da Fehler oder Verzögerungen beim Zugriff auf Dashboards auftreten können. Daher gilt: Wenn Ihre Daten nicht kritisch sind und keine Echtzeit-Aktualisierung erfordern, sollten Sie ein größeres Zeitintervall von einem Tag oder sogar einer Woche einplanen, um die Grafiken stabiler und zuverlässiger zu machen.
Falls Ihr Unternehmen professionelle Hilfe bei der Integration der .NET-Services mit Power-BI-Dashboards braucht, um dynamische Diagramme zu erstellen und Ihr Produkt moderner und daten-aktuell zu gestalten, wenden Sie sich an Chudovo! Wir sind ein Beratungsunternehmen mit über 20 Jahren Markterfahrung, haben mehr als 200 Projekte in verschiedenen Stacks und Bereichen, einschließlich Daten, umgesetzt und sind Experten für .NET. Fragen Sie gern ein unverbindliches Angebot bei uns an!