Zum Hauptinhalt springen
Use Cases

Power BI Integration: Daten automatisch aktualisieren mit n8n und Make.com

So integrieren Sie Power BI in Ihre Automatisierungs-Workflows.

14 min Lesezeit
Aktualisiert: 24. März 2026

Power BI ist Microsofts Business Intelligence Lösung – mächtig, aber oft isoliert von anderen Systemen. In diesem Guide zeigen wir, wie Sie Power BI mit Automatisierung verbinden: Daten automatisch aktualisieren, Reports verteilen und Alerts bei KPI-Änderungen senden.

Warum Power BI automatisieren?

Typische Probleme:
ProblemManueller AufwandAutomatisierte Lösung
Daten-RefreshTäglich manuellAutomatisch bei Änderung
Report-VerteilungE-Mail-ExportAutomatischer Versand
KPI-ÜberwachungDashboard checkenProaktive Alerts
Datenquellen-SyncETL-Jobs pflegenEvent-basierte Updates

Power BI REST API Grundlagen

Die Power BI Automatisierung basiert auf der REST API. Falls Sie noch keine Erfahrung mit API-Anbindungen haben, empfehlen wir unseren Einsteiger-Guide zur API Integration.

API-Zugang einrichten

  • Azure AD App registrieren:
  • - Azure Portal → App registrations → New registration

    - Name: "Power BI Automation"

    - Redirect URI: https://n8n.ihre-domain.de/oauth2/callback

  • Berechtigungen hinzufügen:
  • - API permissions → Add permission → Power BI Service

    - Delegated: Dataset.ReadWrite.All, Report.Read.All

  • Client Secret erstellen:
  • - Certificates & secrets → New client secret

    - Secret kopieren und sicher speichern

    Authentifizierung

    // OAuth2 Token abrufen
    

    const tokenResponse = await fetch('https://login.microsoftonline.com/{tenant}/oauth2/v2.0/token', {

    method: 'POST',

    headers: { 'Content-Type': 'application/x-www-form-urlencoded' },

    body: new URLSearchParams({

    client_id: 'YOUR_CLIENT_ID',

    client_secret: 'YOUR_CLIENT_SECRET',

    scope: 'https://analysis.windows.net/powerbi/api/.default',

    grant_type: 'client_credentials'

    })

    });

    const { access_token } = await tokenResponse.json();

    Workflow 1: Automatischer Dataset Refresh

    Das Ziel

    Datasets automatisch aktualisieren, wenn sich Quelldaten ändern.

    Trigger-Optionen

    Option A: Zeitgesteuert
    

    Schedule (täglich 6:00)

    Power BI: Dataset Refresh

    Option B: Event-basiert

    Datenbank (neue Daten)

    Power BI: Dataset Refresh

    Option C: Webhook

    Externes System (Webhook)

    Power BI: Dataset Refresh

    n8n Implementation

    Node 1: Trigger (Schedule oder Webhook) Node 2: Power BI Refresh starten
    // Node: HTTP Request
    

    {

    "method": "POST",

    "url": "https://api.powerbi.com/v1.0/myorg/groups/{{ $env.WORKSPACE_ID }}/datasets/{{ $env.DATASET_ID }}/refreshes",

    "headers": {

    "Authorization": "Bearer {{ $json.access_token }}",

    "Content-Type": "application/json"

    },

    "body": {

    "notifyOption": "MailOnFailure"

    }

    }

    Node 3: Refresh-Status prüfen
    // Power BI Refresh ist async - Status abfragen
    

    // Node: HTTP Request

    {

    "method": "GET",

    "url": "https://api.powerbi.com/v1.0/myorg/groups/{{ $env.WORKSPACE_ID }}/datasets/{{ $env.DATASET_ID }}/refreshes?$top=1",

    "headers": {

    "Authorization": "Bearer {{ $json.access_token }}"

    }

    }

    Node 4: Auf Abschluss warten
    // Node: Wait + Loop
    

    const refreshStatus = $json.value[0].status;

    if (refreshStatus === 'Completed') {

    return { success: true };

    } else if (refreshStatus === 'Failed') {

    throw new Error('Refresh failed: ' + $json.value[0].serviceExceptionJson);

    } else {

    // Noch in Progress - erneut prüfen

    await wait(30000); // 30 Sekunden

    // ... Loop

    }

    Selbst bauen oder bauen lassen?
    Wir implementieren diesen Workflow für Sie — fertig getestet in 1-4 Wochen. Festpreisangebot in 24h.
    Angebot anfragen →

    Workflow 2: Report per E-Mail versenden

    Das Ziel

    Reports automatisch als PDF exportieren und per E-Mail versenden.

    Der Workflow

    Schedule (Montag 8:00)
    

    Power BI: Report exportieren (PDF)

    Warten auf Export

    PDF herunterladen

    E-Mail mit Anhang senden

    n8n Implementation

    Schritt 1: Export starten
    // Node: HTTP Request
    

    {

    "method": "POST",

    "url": "https://api.powerbi.com/v1.0/myorg/groups/{{ $env.WORKSPACE_ID }}/reports/{{ $env.REPORT_ID }}/ExportTo",

    "headers": {

    "Authorization": "Bearer {{ $json.access_token }}",

    "Content-Type": "application/json"

    },

    "body": {

    "format": "PDF",

    "powerBIReportConfiguration": {

    "pages": [

    { "pageName": "ReportSection1" }

    ]

    }

    }

    }

    Schritt 2: Export-Status prüfen
    // Node: HTTP Request (Loop bis fertig)
    

    {

    "method": "GET",

    "url": "https://api.powerbi.com/v1.0/myorg/groups/{{ $env.WORKSPACE_ID }}/reports/{{ $env.REPORT_ID }}/exports/{{ $json.id }}",

    "headers": {

    "Authorization": "Bearer {{ $json.access_token }}"

    }

    }

    Schritt 3: PDF herunterladen
    // Node: HTTP Request (Binary)
    

    {

    "method": "GET",

    "url": "https://api.powerbi.com/v1.0/myorg/groups/{{ $env.WORKSPACE_ID }}/reports/{{ $env.REPORT_ID }}/exports/{{ $json.id }}/file",

    "headers": {

    "Authorization": "Bearer {{ $json.access_token }}"

    },

    "responseFormat": "file"

    }

    Schritt 4: E-Mail senden
    // Node: Send Email
    

    {

    "to": "management@firma.de",

    "subject": "Wöchentlicher Sales Report - KW {{ $now.weekNumber }}",

    "body": "Anbei der aktuelle Sales Report.",

    "attachments": [

    {

    "filename": "Sales-Report-KW{{ $now.weekNumber }}.pdf",

    "data": "{{ $binary.data }}"

    }

    ]

    }

    Workflow 3: KPI-Alerts

    Das Ziel

    Benachrichtigung wenn KPIs bestimmte Schwellenwerte über-/unterschreiten.

    Der Workflow

    Schedule (stündlich)
    

    Power BI: DAX Query ausführen

    KPI-Werte prüfen

    Schwellenwert überschritten?

    Ja: Alert senden (Slack/Email)

    DAX Query ausführen

    // Node: HTTP Request
    

    {

    "method": "POST",

    "url": "https://api.powerbi.com/v1.0/myorg/groups/{{ $env.WORKSPACE_ID }}/datasets/{{ $env.DATASET_ID }}/executeQueries",

    "headers": {

    "Authorization": "Bearer {{ $json.access_token }}",

    "Content-Type": "application/json"

    },

    "body": {

    "queries": [

    {

    "query": "EVALUATE SUMMARIZECOLUMNS('Date'[Month], 'Sales'[Total Revenue], 'Sales'[Order Count])"

    }

    ],

    "serializerSettings": {

    "includeNulls": true

    }

    }

    }

    Alert-Logik

    // Node: Code
    

    const results = $json.results[0].tables[0].rows;

    const currentMonth = results[results.length - 1];

    const alerts = [];

    // Umsatz-Check

    if (currentMonth['Sales[Total Revenue]'] < 100000) {

    alerts.push({

    type: 'warning',

    kpi: 'Umsatz',

    value: currentMonth['Sales[Total Revenue]'],

    threshold: 100000,

    message: 'Umsatz unter Ziel!'

    });

    }

    // Order-Count-Check

    if (currentMonth['Sales[Order Count]'] < 500) {

    alerts.push({

    type: 'critical',

    kpi: 'Bestellungen',

    value: currentMonth['Sales[Order Count]'],

    threshold: 500,

    message: 'Bestellungen kritisch niedrig!'

    });

    }

    return { alerts, hasAlerts: alerts.length > 0 };

    Slack Alert

    // Node: Slack (wenn hasAlerts = true)
    

    {

    "channel": "#kpi-alerts",

    "attachments": [

    {

    "color": "{{ $json.alerts[0].type === 'critical' ? 'danger' : 'warning' }}",

    "title": "⚠️ KPI Alert",

    "fields": $json.alerts.map(a => ({

    "title": a.kpi,

    "value": ${a.value} (Ziel: ${a.threshold}),

    "short": true

    }))

    }

    ]

    }

    Workflow 4: Daten nach Power BI pushen

    Push-Datasets erstellen

    Power BI unterstützt Push-Datasets für Echtzeit-Daten:

    // Dataset erstellen
    

    {

    "method": "POST",

    "url": "https://api.powerbi.com/v1.0/myorg/groups/{{ $env.WORKSPACE_ID }}/datasets",

    "body": {

    "name": "Real-Time Sales",

    "defaultMode": "Push",

    "tables": [

    {

    "name": "Sales",

    "columns": [

    { "name": "Timestamp", "dataType": "DateTime" },

    { "name": "Product", "dataType": "String" },

    { "name": "Amount", "dataType": "Double" },

    { "name": "Quantity", "dataType": "Int64" }

    ]

    }

    ]

    }

    }

    Daten pushen

    // Bei neuer Bestellung: Daten an Power BI senden
    

    {

    "method": "POST",

    "url": "https://api.powerbi.com/v1.0/myorg/groups/{{ $env.WORKSPACE_ID }}/datasets/{{ $env.PUSH_DATASET_ID }}/tables/Sales/rows",

    "body": {

    "rows": [

    {

    "Timestamp": "{{ $now.toISO() }}",

    "Product": "{{ $json.product_name }}",

    "Amount": {{ $json.total }},

    "Quantity": {{ $json.quantity }}

    }

    ]

    }

    }

    Schulung oder Implementierung?
    Ob Sie es selbst lernen oder von uns umsetzen lassen wollen — wir bieten beides. Individuelle Workshops ab 2h oder fertige Lösungen.
    Optionen ansehen →

    Make.com Szenario

    Module für Power BI

    Make.com hat native Power BI Module:

  • Power BI → Refresh a Dataset
  • Power BI → Export a Report
  • Power BI → Execute a Query
  • Beispiel-Szenario

    Schedule (täglich 6:00)
    

    Power BI: Refresh Dataset

    Wait: 10 Minuten

    Power BI: Export Report to PDF

    Wait: 5 Minuten

    Power BI: Get Export Status

    Gmail: Send with Attachment

    Integration mit anderen Datenquellen

    Power BI lässt sich mit zahlreichen Systemen verbinden -- weitere Inspirationen finden Sie in unseren Workflow Automatisierung Beispielen.

    SQL Server → Power BI

    SQL Server (neue Daten)
    

    Trigger: Neue Zeilen

    Power BI: Dataset Refresh

    Google Analytics → Power BI

    Schedule (täglich)
    

    Google Analytics: Report abrufen

    Daten transformieren

    Power BI: Push Dataset

    Shopify → Power BI (Echtzeit)

    Shopify Webhook (neue Bestellung)
    

    Daten formatieren

    Power BI: Push to Real-Time Dataset

    Best Practices

    1. Refresh-Limits beachten

    Power BI PlanRefreshes/Tag
    Pro8
    Premium48
    Premium per User48

    2. Fehlerbehandlung

    // Refresh-Fehler abfangen
    

    try {

    await refreshDataset();

    } catch (error) {

    if (error.status === 429) {

    // Rate Limit - später erneut versuchen

    await wait(3600000); // 1 Stunde

    } else if (error.status === 401) {

    // Token abgelaufen - neu authentifizieren

    await refreshToken();

    } else {

    await sendAlert(error);

    }

    }

    3. Incremental Refresh nutzen

    Statt kompletter Refresh nur neue Daten laden:

    Power BI Desktop:
    
    • Incremental Refresh aktivieren
    • RangeStart/RangeEnd Parameter definieren
    • Nur Delta-Daten werden geladen

    4. Gateway-Status überwachen

    // Gateway-Status prüfen
    

    const gateways = await fetch(

    'https://api.powerbi.com/v1.0/myorg/gateways',

    { headers: { 'Authorization': Bearer ${token} } }

    );

    for (const gateway of gateways.value) {

    if (gateway.publicKey === null) {

    await sendAlert(Gateway ${gateway.name} ist offline!);

    }

    }

    Kosten

    KomponenteKosten
    Power BI Pro9,40€/User/Monat
    Power BI PremiumAb 4.675€/Monat
    n8n CloudAb 20€/Monat
    Make.comAb 9€/Monat

    Fazit

    Power BI Automatisierung ermöglicht:

    • Echtzeit-Datenaktualisierung
    • Automatische Report-Verteilung
    • Proaktive KPI-Überwachung
    • Integration mit anderen Systemen

    Weiterführende Artikel

    Nächste Schritte

  • Azure AD App registrieren
  • Power BI API testen
  • Ersten Refresh-Workflow erstellen
  • Alerts einrichten
  • Report-Verteilung automatisieren
  • Wir unterstützen Sie bei der Power BI Automatisierung -- von der Einrichtung bis zum produktiven Einsatz. Vereinbaren Sie eine kostenlose Beratung und starten Sie mit automatisiertem Reporting.

    Genau diesen Workflow?

    Wir bauen solche Workflows jede Woche — fertig getestet, produktionsreif. Festpreisangebot für Ihren Use Case.

    Auf dem Laufenden bleiben

    Automatisierungs-Insights, die wirklich helfen

    Neue Tool-Vergleiche, Workflow-Tipps und Preis-Updates — direkt in Ihr Postfach. Kein Spam, jederzeit abbestellbar.

    Wir respektieren Ihre Privatsphäre. Jederzeit abbestellbar.