Warum ich diese KomBI nutze
In KMU-Projekten liegt oft ein Teil der Daten in WordPress (Bestellungen, Formulare, Mitglieder), ein anderer Teil in Access (Artikelstamm, Vertriebsdaten, Kalkulationen).
Power BI eignet sich gut, um beides zusammenzubringen – ohne alles erst in ein zentrales DWH zu überführen.
Ich zeige Dir, wie ich die Datenquellen verbinde, bereinige und visualisiere.
Übersicht: Architektur
- WordPress-Daten: per MySQL-ODBC
- Access-Daten: lokal oder im Netzwerk
- Power BI: verbindet beides direkt
- Datenmodell mit Transformationen in Power Query
- Veröffentlichung auf Power BI Service (optional)
1. WordPress-Daten via ODBC
ODBC-Treiber installieren: MySQL ODBC 8.0 Unicode Driver
Dann in Power BI Desktop:
Start → Daten abrufen → ODBC → DSN auswählen
Tabelle wp_posts
als Beispiel:
SELECT ID, post_title, post_date, post_type
FROM wp_posts
WHERE post_type IN ('post', 'shop_order')
Diese Abfrage kannst Du direkt in Power Query einfügen (Erweiterter Editor).
Bei vielen Custom Fields: zusätzlich wp_postmeta
joinen.
Typischer Merge in Power Query:
SELECT p.ID, p.post_title, p.post_date, m.meta_key, m.meta_value
FROM wp_posts p
LEFT JOIN wp_postmeta m ON p.ID = m.post_id
WHERE p.post_type = 'shop_order'
Tipp: In Power BI kannst Du mit Parametern (z. B. let
) flexibel filtern, z. B. nur Bestellungen der letzten 30 Tage laden.
2. Access-Daten einbinden
Start → Daten abrufen → Access-Datenbank → Datei auswählen
Ich bereite die Access-Daten immer in separaten Abfragen vor.
Beispiel: Tabelle tbl_Artikel
mit Netto-Preisen, Kategorien, Lagerstatus
Zusätzlicher Query in Access (Jet-SQL):
SELECT ArtikelNr, Bezeichnung, Kategorie, PreisNetto, Bestand
FROM tbl_Artikel
WHERE Aktiv = True
In Power Query kannst Du daraus dann Dimensionstabellen bauen (Artikel, Kategorien, Preisgruppen).
3. Gemeinsames Datenmodell
Power BI eignet sich gut für Sternschemata.
Ich baue:
- Fakten: Bestellungen (aus WordPress)
- Dimensionen: Artikel, Kunde, Kategorie (aus Access)
Beziehungen:
Tabelle | Verknüpft mit | Beziehung |
---|---|---|
wp_orders | tbl_Kunde | Kunde_ID = Kundennr |
wp_order_items | tbl_Artikel | Artikel_ID = ArtikelNr |
wp_orders | Datumskalender | post_date = Datum |
Dazu nutze ich eine eigene Datumstabelle in Power BI:
let
StartDate = #date(2022, 1, 1),
EndDate = DateTime.Date(DateTime.LocalNow()),
Dates = List.Dates(StartDate, Duration.Days(EndDate - StartDate), #duration(1,0,0,0))
in
Table.FromList(Dates, Splitter.SplitByNothing(), {"Datum"})
4. Transformationen und Berechnungen
Typische Berechnungen in DAX:
UmsatzNetto = SUMX(wp_order_items, wp_order_items[qty] * wp_order_items[preis])
AnzahlBestellungen = DISTINCTCOUNT(wp_orders[ID])
LetzteBestellung = CALCULATE(MAX(wp_orders[post_date]), ALLEXCEPT(wp_orders, wp_orders[kunde_id]))
Zeitzonenprobleme bei post_date
löse ich per Power Query:
= Table.TransformColumns(#"Vorherige Schritte", {{"post_date", each DateTimeZone.ToLocal(_), type datetime}})
5. Veröffentlichung im Power BI Service
Wenn Du die Datei regelmäßig aktualisieren willst, brauchst Du ein Gateway.
ODBC auf WordPress und Access auf dem Netzlaufwerk müssen auf dem Gateway-Server verfügbar sein.
Ich empfehle:
- Datenreduzierung in Power Query
- Datenflüsse bei größeren Projekten
- Trennung von Modell und Berichtsseite (per
thin reports
)
Fazit zwischendurch
Diese Kombi funktioniert gut, wenn Du keinen zentralen SQL-Server hast.
Access und WordPress ergänzen sich, Power BI baut die Brücke.
Die Abfragen sind anspruchsvoll – aber stabil, wenn man sich an ein Schema hält.
Keine Antworten