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

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

    }

    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 }}

    }

    ]

    }

    }

    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

    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.

    Sie haben Fragen zur Automatisierung?

    Unsere Experten helfen Ihnen, die richtigen Entscheidungen für Ihr Unternehmen zu treffen.