Der vollständige Leitfaden zur Power BI + Odoo-Integration

Verbinden Sie Power BI mit Odoo ERP für erweiterte Analysen. PostgreSQL-Direktabfragen, Schlüsseltabellen, Vertriebs-/Bestands-/HR-Dashboards und inkrementelle Aktualisierungseinrichtung.

E
ECOSIRE Research and Development Team
|17. März 202624 Min. Lesezeit5.4k Wörter|

Teil unserer Data Analytics & BI-Serie

Den vollständigen Leitfaden lesen

Der vollständige Leitfaden zur Power BI + Odoo-Integration

Odoo ist eine der leistungsstärksten Open-Source-ERP-Plattformen der Welt mit über 12 Millionen Benutzern und 43 offiziellen Modulen, die alles von Vertrieb und Lagerhaltung bis hin zu Fertigung und Personalwesen abdecken. Power BI ist die branchenführende Business-Intelligence-Plattform mit über 300 Millionen aktiven Benutzern pro Monat. Dennoch verbinden überraschend wenige Organisationen diese beiden Systeme – was einen enormen analytischen Wert auf den Tisch bringt.

Der Grund liegt auf der Hand: Odoo verfügt über ein eigenes integriertes Reporting und die meisten Power BI-Beratungsunternehmen konzentrieren sich auf Microsoft Dynamics-, SAP- oder Salesforce-Integrationen. Nur sehr wenige Unternehmen verfügen über umfassendes Fachwissen in beiden Plattformen. Bei ECOSIRE haben wir über 43 Odoo-Module entwickelt und bereitgestellt und verfügen über umfassende Power BI-Expertise, was die Kombination von Odoo + Power BI zu einer unserer Kernspezialisierungen macht. Dieser Leitfaden fasst alles zusammen, was wir aus Dutzenden realer Integrationen gelernt haben.


Wichtige Erkenntnisse

  • Die PostgreSQL-Datenbank von Odoo kann über den nativen PostgreSQL-Connector direkt mit Power BI Desktop verbunden werden, sodass Sie vollen Zugriff auf jede Tabelle und jedes Feld haben – Die fünf wertvollsten Odoo-Tabellen für Analysen sind sale_order, account_move, stock_picking, hr_employee und mrp_produktion – zusammen decken sie 80 Prozent des Berichtsbedarfs von Führungskräften ab – Durch die inkrementelle Aktualisierung in Power BI können die Ladezeiten für Odoo-Daten von Stunden auf Minuten verkürzt werden, indem nur Datensätze abgerufen werden, die sich seit der letzten Aktualisierung geändert haben
  • OData-Endpunkte und die externe API von Odoo bieten cloudfreundliche Alternativen, wenn kein direkter Datenbankzugriff verfügbar ist – Die Sicherheit auf Zeilenebene in Power BI kann die unternehmensübergreifenden Zugriffskontrollen von Odoo widerspiegeln und stellt sicher, dass Benutzer nur Daten von den ihnen zugewiesenen Unternehmen sehen
  • Benutzerdefinierte SQL-Abfragen für die PostgreSQL-Datenbank von Odoo übertreffen generische Tabellenimporte um das 5- bis 10-fache, da Sie auf Datenbankebene filtern, verknüpfen und aggregieren können – Eine gut konzipierte Odoo + Power BI-Bereitstellung ersetzt Dutzende von Tabellenkalkulationsberichten durch eine einzige verwaltete Analyseplattform

Warum Odoo + Power BI eine leistungsstarke Kombination ist

Die Einschränkungen der integrierten Berichterstellung von Odoo

Odoo wird mit mehreren Berichtstools ausgeliefert: Pivot-Ansichten, Diagrammansichten und ein integriertes Dashboard. Für den täglichen Betrieb sind diese ausreichend. Sie sind jedoch in mehrfacher Hinsicht unzureichend für Unternehmensanalysen.

Erstens können die Pivot-Ansichten von Odoo keine Daten aus mehreren Modulen in einer einzigen Visualisierung kombinieren. Sie können den Umsatzerlös nicht mit dem Lagerumschlag und dem Fertigungsdurchsatz in einem Diagramm überlagern. Die Berichterstattung jedes Moduls erfolgt isoliert.

Zweitens fehlen Odoo Zeitintelligenzfunktionen. Jahresvergleiche, gleitende Durchschnitte, kumulative Summen und Berechnungen für den Zeitraum bis heute erfordern eine benutzerdefinierte Entwicklung oder manuelle Tabellenexporte.

Drittens hat Odoo kein Konzept für ein geregeltes Datenmodell. Es gibt keine gemeinsamen Definitionen für Kennzahlen wie „Umsatz“ oder „Customer Lifetime Value“. Jeder Benutzer erstellt seine eigene Interpretation, was zu widersprüchlichen Zahlen in Managementbesprechungen führt.

Viertens sind die Visualisierungsmöglichkeiten von Odoo auf einfache Balkendiagramme, Liniendiagramme und Kreisdiagramme beschränkt. Wärmekarten, Streudiagramme, Wasserfalldiagramme, Zerlegungsbäume und KPI-Karten sind nicht verfügbar.

Was Power BI hinzufügt

Power BI behebt alle diese Einschränkungen. Es stellt eine Verbindung zur PostgreSQL-Datenbank (oder API) von Odoo her und erstellt ein einheitliches semantisches Modell über alle Module hinweg. DAX-Formeln bieten Zeitintelligenz, statistische Funktionen und komplexe Geschäftslogik. Die Visualisierungsbibliothek umfasst über 300 Diagrammtypen. Und die Governance-Funktionen von Power BI – Arbeitsbereiche, Sicherheit auf Zeilenebene, Bestätigung, Vertraulichkeitsbezeichnungen – sorgen für eine Datenverwaltung auf Unternehmensniveau.

Durch die Kombination erhalten Sie die operative Exzellenz von Odoo für die tägliche Arbeit und die analytische Tiefe von Power BI für die strategische Entscheidungsfindung. Betriebsteams arbeiten weiterhin in Odoo; Führungskräfte und Analysten erhalten Power BI-Dashboards, die automatisch aktualisiert werden.


Verbindungsmethoden: Direkte Datenbank vs. API

Es gibt drei Hauptmethoden, um Power BI mit Odoo zu verbinden. Abhängig von Ihrem Hosting-Modell und Ihren Sicherheitsanforderungen gibt es jeweils Kompromisse.

Methode 1: Direkte PostgreSQL-Verbindung

Dies ist die bevorzugte Methode für lokale oder selbst gehostete Odoo-Bereitstellungen. Odoo speichert alle Daten in PostgreSQL und Power BI verfügt über einen nativen PostgreSQL-Connector.

Vorteile:

  • Schnellste Abfrageleistung (kein API-Overhead)
  • Voller Zugriff auf jede Tabelle und jedes Feld, einschließlich benutzerdefinierter Module
  • Unterstützt komplexe SQL-Abfragen mit Joins und Aggregationen auf Datenbankebene – Ermöglicht die inkrementelle Aktualisierung (erfordert eine Datetime-Spalte)
  • Keine Odoo-Lizenz oder API-Ratenbegrenzung

Einrichtungsschritte:

  1. Öffnen Sie Power BI Desktop und wählen Sie „Daten abrufen“ und dann „PostgreSQL-Datenbank“.
  2. Geben Sie den Hostnamen und Datenbanknamen Ihres Odoo-Servers ein (normalerweise den Namen der Odoo-Instanz).
  3. Verwenden Sie einen schreibgeschützten Datenbankbenutzer (niemals das Odoo-Administratorkonto).
  4. Wählen Sie für die meisten Szenarien den Importmodus oder für Echtzeitanforderungen DirectQuery
  5. Navigieren Sie durch die Tabellenliste oder verwenden Sie eine benutzerdefinierte SQL-Abfrage

Parameter der Verbindungszeichenfolge:

ParameterTypischer Wert
Serveryour-odoo-server.com:5432
Datenbankodoo_produktion
Benutzernamepowerbi_readonly
Passwort(in Anmeldeinformationen gespeichert)
SSL-ModusErforderlich (für die Produktion)
Befehlszeitüberschreitung600 (Sekunden, für große Abfragen)

Erstellen eines schreibgeschützten Benutzers in PostgreSQL:

CREATE ROLE powerbi_readonly WITH LOGIN PASSWORD 'secure_password';
GRANT CONNECT ON DATABASE odoo_production TO powerbi_readonly;
GRANT USAGE ON SCHEMA public TO powerbi_readonly;
GRANT SELECT ON ALL TABLES IN SCHEMA public TO powerbi_readonly;
ALTER DEFAULT PRIVILEGES IN SCHEMA public
  GRANT SELECT ON TABLES TO powerbi_readonly;

Dieser Ansatz stellt sicher, dass Power BI alle aktuellen und zukünftigen Tabellen ohne Schreibzugriff auf Ihre Produktionsdatenbank lesen kann.

Methode 2: Externe Odoo-API (XML-RPC / JSON-RPC)

Odoo stellt eine vollständige API zum Lesen und Schreiben von Daten zur Verfügung. Power BI kann dies über benutzerdefinierte Konnektoren oder Python-Skripte nutzen.

Vorteile:

  • Funktioniert mit Odoo.sh und Odoo Online (kein direkter Datenbankzugriff erforderlich)
  • Respektiert die Zugriffskontrollregeln und Aufzeichnungsregeln von Odoo
  • Der Datenbankport muss nicht extern verfügbar gemacht werden

Nachteile:

  • Deutlich langsamer als direkte Datenbankabfragen (10-100x für große Datensätze) – API-Ratenbegrenzungen können Extrakte mit hohem Volumen drosseln – Erfordert eine benutzerdefinierte Power Query-Funktion oder einen ETL-Zwischenschritt
  • Paginierung erhöht die Komplexität

Für den JSON-RPC-Endpunkt von Odoo würde eine typische Power Query M-Funktion https://your-odoo.com/jsonrpc mit Authentifizierung aufrufen und dann durch die Ergebnisse paginieren. Dies funktioniert, wird jedoch für Tabellen mit mehr als 50.000 Datensätzen unpraktisch.

Methode 3: OData-Endpunkte über Odoo-Connector-Module

Mehrere Odoo-Community-Module stellen OData-Feeds bereit, die Power BI nativ nutzen kann. Der OData-Connector in Power BI unterstützt standardmäßig Authentifizierung und Paginierung.

Wann sollte diese Methode verwendet werden:

  • Odoo Online / Odoo.sh-Bereitstellungen, bei denen der Datenbankzugriff eingeschränkt ist
  • Szenarien, die die Geschäftslogik von Odoo (berechnete Felder, Zugriffsregeln) in den Daten erfordern
  • Kleinere Datensätze (unter 100.000 Datensätze pro Entität)

Für die meisten Unternehmensbereitstellungen wird Methode 1 (direktes PostgreSQL) dringend empfohlen. Der Leistungsunterschied ist erheblich und die Flexibilität von SQL-Abfragen ermöglicht es Ihnen, Daten an der Quelle zu gestalten.


Wesentliche Odoo-Tabellen für Power BI

Die PostgreSQL-Datenbank von Odoo enthält Hunderte von Tabellen. Das Verständnis der Kerntabellen und ihrer Beziehungen ist für die Erstellung effektiver Power BI-Modelle von entscheidender Bedeutung. Nachfolgend finden Sie die Tabellen, die 80 Prozent der Executive-Dashboards ausmachen.

Verkaufsmodultabellen

TabelleZweckSchlüsselfelder
sale_orderKundenaufträge (Kopfzeilen)id, name, partner_id, date_order, amount_total, state, company_id, user_id
sale_order_lineKundenauftragseinzelpostenorder_id, product_id, product_uom_qty, price_unit, price_subtotal, discount
res_partnerKunden und LieferantenID, Name, E-Mail, Länder-ID, Kategorie-ID, Kundenrang, Lieferantenrang
Produkt_ProduktProduktvariantenid, default_code, list_price, standard_price, categ_id, active
ProduktvorlageProduktvorlagenID, Name, Typ, sale_ok, Purchase_ok

Wichtige Beziehungen: sale_order.partner_id verweist auf res_partner.id. „sale_order_line.product_id“ verweist auf „product_product.id“. „product_product.product_tmpl_id“ verweist auf „product_template.id“.

Eine typische Vertriebsanalyseabfrage verknüpft diese Tabellen, um eine denormalisierte Faktentabelle zu erstellen:

SELECT
  so.id AS order_id,
  so.name AS order_number,
  so.date_order,
  so.state,
  rp.name AS customer_name,
  rp.country_id,
  rc.name AS country_name,
  sol.product_id,
  pt.name AS product_name,
  pc.name AS product_category,
  sol.product_uom_qty AS quantity,
  sol.price_unit,
  sol.discount,
  sol.price_subtotal AS line_total,
  so.amount_total AS order_total,
  ru.login AS salesperson
FROM sale_order so
JOIN sale_order_line sol ON sol.order_id = so.id
JOIN res_partner rp ON so.partner_id = rp.id
LEFT JOIN res_country rc ON rp.country_id = rc.id
JOIN product_product pp ON sol.product_id = pp.id
JOIN product_template pt ON pp.product_tmpl_id = pt.id
LEFT JOIN product_category pc ON pt.categ_id = pc.id
LEFT JOIN res_users ru ON so.user_id = ru.id
WHERE so.state IN ('sale', 'done')
ORDER BY so.date_order DESC;

Buchhaltungsmodultabellen

TabelleZweckSchlüsselfelder
account_moveRechnungen, Rechnungen, JournaleinträgeID, Name, Umzugstyp, Partner-ID, Rechnungsdatum, Betrag_Gesamtbetrag, Bundesstaat, Zahlungsstatus
account_move_lineJournaleintragszeilenmove_id, account_id, lastschrift, kredit, saldo, datum, partner_id
Konto_KontoKontenplanID, Code, Name, Kontotyp
KontozahlungZahlungenID, Partner_ID, Betrag, Datum, Status, Zahlungstyp
account_journalZeitschriften (Bank, Vertrieb usw.)ID, Name, Typ, Code

Wichtiger Unterschied: In Odoo speichert account_move Rechnungen (move_type = 'out_invoice'), Lieferantenrechnungen ('in_invoice'), Gutschriften ('out_refund', 'in_refund') und Journaleinträge ('entry'). Filtern Sie in Ihren Power BI-Abfragen immer nach „move_type“.

Das Feld payment_state in account_move sagt Ihnen, ob eine Rechnung „nicht_bezahlt“, „in_zahlung“, „bezahlt“, „teilweise“ oder „storniert“ ist. Dies ist für Dashboards zur Debitorenalterung von wesentlicher Bedeutung.

Inventarmodultabellen

TabelleZweckSchlüsselfelder
stock_pickingLieferaufträge, Quittungen, interne Überweisungenid, name, partner_id, geplantes_datum, date_done, state, picking_type_id
stock_moveIndividuelle ProduktumzügeKommissionierungs-ID, Produkt-ID, Produktmenge, Menge, Status, Datum
stock_quantAktueller LagerbestandProdukt-ID, Standort-ID, Menge, reservierte_Menge
stock_locationLager, Zonen, LagerplätzeID, Name, Verwendung, Standort-ID (übergeordnet)
stock_warehouseLagerdefinitionenID, Name, Code, Partner_ID

Inventar in Echtzeit: stock_quant spiegelt immer den aktuellen Bestandszustand wider. Für eine historische Bestandsanalyse müssen Sie stock_move mit Datumsfiltern abfragen und laufende Salden berechnen.

Fertigungsmodultabellen

TabelleZweckSchlüsselfelder
mrp_produktionFertigungsaufträgeID, Name, Produkt-ID, Produktmenge, Startdatum, Fertigdatum, Status
mrp_bomStücklistenid, produkt_tmpl_id, produkt_menge, typ
mrp_bom_lineStücklistenkomponentenbom_id, produkt_id, produkt_menge
mrp_workorderArbeitsauftragsvorgängeProduktions_ID, Workcenter_ID, Dauer, Status
mrp_workcenterArbeitsplätze / MaschinenID, Name, Kapazität, Zeiteffizienz

OEE-Berechnung: Die Gesamtanlageneffektivität kann aus mrp_workorder-Datensätzen abgeleitet werden, indem die geplante Dauer mit der tatsächlichen Dauer verglichen, Ausfallzeiten analysiert und Qualitätsmetriken verfolgt werden.

Personaltabellen

TabelleZweckSchlüsselfelder
hr_employeeMitarbeiteraktenID, Name, Abteilungs-ID, Job-ID, Arbeits-E-Mail, aktiv
hr_abteilungAbteilungenid, name, parent_id, manager_id
hr_contractArbeitsverträgeEmployee_ID, Lohn, Datum_Start, Datum_Ende, Status
hr_leaveUrlaubsanträgeEmployee_ID, Holiday_Status_ID, Date_from, Date_to, State
hr_attendanceEin-/AusstempeldatensätzeEmployee_ID, Check_in, Check_out, Worked_hours

Aufbau des Power BI-Datenmodells

Sternschema-Design

Das effektivste Datenmodell für Odoo-Analysen folgt einem Sternschemamuster. Im Mittelpunkt stehen Faktentabellen (Kundenaufträge, Rechnungen, Lagerbewegungen, Produktionsaufträge). Sie sind von Dimensionstabellen (Produkte, Kunden, Termine, Mitarbeiter, Standorte) umgeben.

Empfohlene Faktentabellen:

  1. Fact_Sales – aus sale_order + sale_order_line (Granulat: eine Zeile pro Bestellzeile)
  2. Fact_Invoices – aus account_move + account_move_line (Gremium: eine Zeile pro Journalzeile)
  3. Fact_Inventory – von stock_move (Granulat: eine Zeile pro Lagerbewegung)
  4. Fact_Production – aus mrp_produktion + mrp_workorder (Granulat: eine Zeile pro Arbeitsauftrag)
  5. Fact_Attendance – von hr_attendance (Granulat: eine Zeile pro Ein-/Aus-Uhrpaar)

Gemeinsam genutzte Dimensionstabellen:

  1. Dim_Date – eine in Power BI generierte Kalendertabelle (wesentlich für Zeitinformationen)
  2. Dim_Customer – von res_partner (gefiltert nach customer_rank > 0)
  3. Dim_Product – aus product_product + product_template + product_category
  4. Dim_Employee – aus hr_employee + hr_department + hr_job
  5. Dim_Location – aus stock_location + stock_warehouse
  6. Dim_Company – von res_company (für unternehmensübergreifende Odoo-Bereitstellungen)

Erstellen der Datumsdimension

Odoo verfügt nicht über eine eigene Datumsdimensionstabelle. Sie müssen eines in Power BI mit DAX erstellen:

Dim_Date =
ADDCOLUMNS(
    CALENDAR(DATE(2020, 1, 1), DATE(2030, 12, 31)),
    "Year", YEAR([Date]),
    "Quarter", "Q" & QUARTER([Date]),
    "Month", FORMAT([Date], "MMMM"),
    "MonthNumber", MONTH([Date]),
    "WeekNumber", WEEKNUM([Date]),
    "DayOfWeek", FORMAT([Date], "dddd"),
    "FiscalYear", IF(MONTH([Date]) >= 4, YEAR([Date]), YEAR([Date]) - 1),
    "FiscalQuarter", "FQ" & SWITCH(TRUE(),
        MONTH([Date]) >= 10, 3,
        MONTH([Date]) >= 7, 2,
        MONTH([Date]) >= 4, 1,
        4
    ),
    "IsWeekend", IF(WEEKDAY([Date], 2) > 5, TRUE(), FALSE()),
    "YearMonth", FORMAT([Date], "YYYY-MM")
)

Markieren Sie diese Tabelle als Datumstabelle in Power BI und erstellen Sie Beziehungen von der Datumsspalte jeder Faktentabelle zu Dim_Date[Datum]. Passen Sie den Startmonat des Geschäftsjahres an Ihre Organisation an.

Umgang mit der Multi-Company-Struktur von Odoo

Odoo unterstützt unternehmensübergreifende Konfigurationen, bei denen eine einzige Datenbank mehrere juristische Personen bedient. Jede Transaktionstabelle enthält einen company_id-Fremdschlüssel. Erstellen Sie in Power BI eine Dim_Company-Tabelle aus res_company und stellen Sie Beziehungen zu jeder Faktentabelle her.

Für Sicherheit auf Zeilenebene verwenden Sie die RLS-Funktion von Power BI, um Dim_Company basierend auf der Firmenzuweisung des angemeldeten Benutzers zu filtern. Dies spiegelt die unternehmensübergreifenden Zugriffskontrollen von Odoo in der BI-Ebene wider.


Dashboard-Rezepte: Vertriebsanalysen

Executive Sales Dashboard

Dieses Dashboard beantwortet die fünf Fragen, die sich jeder CEO stellt: Wie hoch ist der Umsatz in diesem Monat? Sind wir für das Quartal auf Kurs? Welche Produkte gewinnen? Welche Verkäufer leisten Leistung? Wo sind unsere Kunden?

Maßnahmen zur Erstellung:

Total Revenue = SUM(Fact_Sales[line_total])

Revenue MTD =
TOTALMTD([Total Revenue], Dim_Date[Date])

Revenue QTD =
TOTALQTD([Total Revenue], Dim_Date[Date])

Revenue YTD =
TOTALYTD([Total Revenue], Dim_Date[Date])

Revenue PY =
CALCULATE([Total Revenue], SAMEPERIODLASTYEAR(Dim_Date[Date]))

Revenue Growth % =
DIVIDE([Total Revenue] - [Revenue PY], [Revenue PY], 0)

Average Order Value =
DIVIDE([Total Revenue], DISTINCTCOUNT(Fact_Sales[order_id]))

Orders Count =
DISTINCTCOUNT(Fact_Sales[order_id])

Visuelles Layout:

  • Zeile 1: Vier KPI-Karten (Umsatz MTD, Umsatz QTD, Umsatz YTD, Wachstum %)
  • Zeile 2: Liniendiagramm (monatlicher Umsatz, aktuelles Jahr vs. Vorjahr) und Balkendiagramm (Umsatz nach Produktkategorie)
  • Zeile 3: Kartenbild (Umsatz nach Kundenland) und Tabelle (Top-10-Verkäufer mit Umsatz, Bestellanzahl, durchschnittliche Geschäftsgröße)
  • Zeile 4: Wasserfalldiagramm (Umsatzbrücke: Neukunden vs. Bestandskunden vs. verloren) und Donut-Diagramm (Umsatz nach Vertriebskanal)

Vertriebspipeline-Analyse

Wenn Sie Odoo CRM zusammen mit dem Vertriebsmodul verwenden, verbinden Sie die Tabelle crm_lead, um Pipeline-Dashboards zu erstellen:

TabelleZweckSchlüsselfelder
crm_leadChancen und LeadsID, Name, Partner_ID, erwarteter_Umsatz, Wahrscheinlichkeit, Bühnen-ID, Benutzer-ID, Datum_Deadline
crm_stagePipeline-StufenID, Name, Sequenz

Pipeline-Maßnahmen:

Pipeline Value =
SUMX(
    FILTER(Fact_Pipeline, Fact_Pipeline[active] = TRUE()),
    Fact_Pipeline[expected_revenue] * Fact_Pipeline[probability] / 100
)

Win Rate =
DIVIDE(
    CALCULATE(COUNTROWS(Fact_Pipeline), Fact_Pipeline[stage_name] = "Won"),
    CALCULATE(COUNTROWS(Fact_Pipeline),
        OR(Fact_Pipeline[stage_name] = "Won", Fact_Pipeline[stage_name] = "Lost")
    )
)

Average Sales Cycle Days =
AVERAGEX(
    FILTER(Fact_Pipeline, Fact_Pipeline[stage_name] = "Won"),
    DATEDIFF(Fact_Pipeline[create_date], Fact_Pipeline[date_closed], DAY)
)

Dashboard-Rezepte: Inventar und Lieferkette

Inventarzustands-Dashboard

Dieses Dashboard überwacht Lagerbestände, Umschlagsraten und die Leistung der Lieferkette.

Wichtige Maßnahmen:

Inventory Value =
SUMX(Fact_Inventory_Current, Fact_Inventory_Current[quantity] * RELATED(Dim_Product[standard_price]))

Inventory Turnover =
DIVIDE(
    [COGS Trailing 12 Months],
    [Average Inventory Value]
)

Days of Inventory =
DIVIDE(365, [Inventory Turnover])

Stockout Rate =
DIVIDE(
    CALCULATE(COUNTROWS(Dim_Product), Dim_Product[on_hand_qty] <= 0, Dim_Product[active] = TRUE()),
    CALCULATE(COUNTROWS(Dim_Product), Dim_Product[active] = TRUE())
)

Reorder Point Items =
CALCULATE(
    COUNTROWS(Dim_Product),
    FILTER(Dim_Product, Dim_Product[on_hand_qty] <= Dim_Product[reorder_min])
)

Visuals:

  • KPI-Karten: Gesamtbestandswert, Umschlagshäufigkeit, Bestandsquote, Artikel unterhalb des Bestellpunktes
  • Streudiagramm: Jedes Produkt wird nach Umsatzrate (x-Achse) vs. Marge (y-Achse) dargestellt, skaliert nach Umsatzbeitrag – dies ist die visuelle Darstellung der ABC-XYZ-Analyse
  • Balkendiagramm: Top-20-Produkte nach Lagerwert (erkennt das gebundene Kapital in Lagerbeständen mit geringer Umschlagshäufigkeit)
  • Tabelle: Artikel unterhalb des Bestellpunkts mit aktuellem Lagerbestand, Tagesbedarf und voraussichtlichem Lagerbestandsdatum

Lieferleistung

Messen Sie ab stock_picking die pünktliche Lieferung:

On-Time Delivery Rate =
DIVIDE(
    CALCULATE(
        COUNTROWS(Fact_Deliveries),
        Fact_Deliveries[date_done] <= Fact_Deliveries[scheduled_date]
    ),
    COUNTROWS(Fact_Deliveries)
)

Average Lead Time Days =
AVERAGEX(
    Fact_Deliveries,
    DATEDIFF(Fact_Deliveries[create_date], Fact_Deliveries[date_done], DAY)
)

Dashboard-Rezepte: Fertigung

Produktionsleistungs-Dashboard

Für Hersteller, die Odoo Manufacturing betreiben, bieten die Tabellen mrp_produktion und mrp_workorder umfangreiche Betriebsdaten.

OEE-Berechnung (Overall Equipment Effectiveness):

Availability =
DIVIDE(
    [Actual Production Time],
    [Planned Production Time]
)

Performance Rate =
DIVIDE(
    [Ideal Cycle Time] * [Total Units Produced],
    [Actual Production Time]
)

Quality Rate =
DIVIDE(
    [Good Units],
    [Total Units Produced]
)

OEE = [Availability] * [Performance Rate] * [Quality Rate]

Visuals:

  • Messdiagramme: OEE, Verfügbarkeit, Leistung, Qualität (jeweils mit Zielschwellenwerten: grün über 85 %, gelb 60–85 %, rot unter 60 %)
  • Liniendiagramm: OEE-Trend pro Woche, mit Kontrollgrenzen
  • Gruppiertes Balkendiagramm: OEE nach Arbeitsplatz, das zeigt, welche Maschinen eine Underperformance aufweisen
  • Tabelle: Produktionsaufträge mit geplanter vs. tatsächlicher Dauer, Abweichung und Ausschussmenge

Arbeitsplatzauslastung

Utilization Rate =
DIVIDE(
    SUM(Fact_WorkOrders[duration_minutes]),
    [Available Minutes Per Period]
)

Downtime Hours =
DIVIDE(
    [Available Minutes Per Period] - SUM(Fact_WorkOrders[duration_minutes]),
    60
)

Dieses Dashboard hilft Produktionsmanagern, Engpässe an Arbeitsplätzen zu identifizieren und die Planung zu optimieren. In Kombination mit den Planungsmoduldaten von Odoo können Sie Kapazitätsplanungsmodelle erstellen, die vorhersagen, wann Sie die maximale Auslastung erreichen werden.


Dashboard-Rezepte: HR und Belegschaft

Workforce Analytics-Dashboard

Aus Odoo-Daten erstellte HR-Dashboards liefern Erkenntnisse, für die die meisten HRIS-Systeme Premium-Preise verlangen.

Personalzahl- und Fluktuationskennzahlen:

Active Employees =
CALCULATE(
    COUNTROWS(Dim_Employee),
    Dim_Employee[active] = TRUE()
)

Attrition Rate =
DIVIDE(
    CALCULATE(
        COUNTROWS(Dim_Employee),
        Dim_Employee[departure_date] <> BLANK(),
        YEAR(Dim_Employee[departure_date]) = YEAR(TODAY())
    ),
    [Average Headcount],
    0
)

Average Tenure Years =
AVERAGEX(
    FILTER(Dim_Employee, Dim_Employee[active] = TRUE()),
    DATEDIFF(Dim_Employee[contract_start_date], TODAY(), DAY) / 365.25
)

Cost Per Employee =
DIVIDE(
    SUM(Fact_Payroll[total_cost]),
    [Active Employees]
)

Abwesenheitsanalyse von hr_leave:

Absence Rate =
DIVIDE(
    SUM(Fact_Leaves[number_of_days]),
    [Working Days In Period] * [Active Employees]
)

Bradford Factor =
SUMX(
    Dim_Employee,
    VAR AbsenceSpells = CALCULATE(COUNTROWS(Fact_Leaves), Fact_Leaves[state] = "validate")
    VAR TotalDays = CALCULATE(SUM(Fact_Leaves[number_of_days]), Fact_Leaves[state] = "validate")
    RETURN AbsenceSpells * AbsenceSpells * TotalDays
)

Anwesenheitsanalyse von hr_attendance:

Average Daily Hours =
AVERAGEX(
    VALUES(Dim_Date[Date]),
    CALCULATE(SUM(Fact_Attendance[worked_hours]))
)

Overtime Hours =
SUMX(
    Fact_Attendance,
    IF(Fact_Attendance[worked_hours] > 8, Fact_Attendance[worked_hours] - 8, 0)
)

Inkrementelle Aktualisierungskonfiguration

Bei Odoo-Datenbanken mit Millionen von Datensätzen sind vollständige Datenaktualisierungen unpraktisch. Die inkrementelle Aktualisierungsfunktion von Power BI lädt nur neue und geänderte Datensätze und reduziert so die Aktualisierungszeiten von Stunden auf Minuten.

Voraussetzungen

  • Power BI Pro- oder Premium-Lizenz – Jede Tabelle muss über eine zuverlässige Datetime-Spalte verfügen (write_date in Odoo ist ideal – es wird aktualisiert, wenn ein Datensatz geändert wird). – Die Datenquelle muss die Abfragefaltung unterstützen (PostgreSQL tut dies)

Konfigurationsschritte

Schritt 1: RangeStart- und RangeEnd-Parameter erstellen

Erstellen Sie in Power Query zwei Parameter vom Typ DateTime:

  • RangeStart: Standardwert = 01.01.2020 00:00:00 Uhr
  • RangeEnd: Standardwert = 31.12.2030 00:00:00 Uhr

Schritt 2: Tabellen nach Parametern filtern

Fügen Sie für jede Faktentabelle einen Filterschritt in Power Query hinzu:

= Table.SelectRows(Source, each [write_date] >= RangeStart and [write_date] < RangeEnd)

Dieser Filter muss zur Datenbank passen (im generierten SQL erscheinen). Überprüfen Sie dies, indem Sie mit der rechten Maustaste auf den Schritt klicken und „Native Abfrage anzeigen“ auswählen.

Schritt 3: Definieren Sie die inkrementelle Aktualisierungsrichtlinie

Klicken Sie mit der rechten Maustaste auf die Tabelle im Modell, wählen Sie Inkrementelle Aktualisierung aus und konfigurieren Sie Folgendes:

EinstellungEmpfohlener Wert
Speichern Sie die Zeilen im letzten3 Jahre
Zeilen im letztenaktualisieren 7 Tage
Datenänderungen erkennenwrite_date-Spalte
Nur komplette Perioden aktualisierenAktiviert

Diese Konfiguration speichert den Verlauf von drei Jahren, aktualisiert jedoch bei jeder geplanten Aktualisierung nur die letzten sieben Tage. Die write_date-Spalte von Odoo wird automatisch aktualisiert, wenn sich ein Feld in einem Datensatz ändert, was sie zu einer zuverlässigen Änderungserkennungsspalte macht.

Auswirkungen auf die Leistung

SzenarioVollständige AktualisierungInkrementelle Aktualisierung
1 Mio. Kundenauftragspositionen12 Minuten45 Sekunden
5 Mio. Journaleinträge38 Minuten2 Minuten
10 Mio. Aktienbewegungen65 Minuten4 Minuten

Der Leistungsgewinn ist dramatisch, insbesondere bei Fertigungs- und Bestandsdatensätzen, die große Mengen an Transaktionsdaten generieren.


Fortgeschritten: Mehrfirmen- und Mehrwährungsfunktionen

Abwicklung unternehmensübergreifender Odoo-Bereitstellungen

Viele Odoo Enterprise-Bereitstellungen bedienen mehrere juristische Personen aus einer einzigen Datenbank. Jeder Transaktionsdatensatz verfügt über ein company_id-Feld. In Power BI:

  1. Erstellen Sie eine Dim_Company-Tabelle aus res_company
  2. Stellen Sie Beziehungen zwischen der „company_id“ jeder Faktentabelle und „Dim_Company“ her
  3. Fügen Sie jeder Dashboard-Seite einen Unternehmens-Slicer hinzu
  4. Implementieren Sie Sicherheit auf Zeilenebene, sodass jeder Benutzer nur die Daten seines Unternehmens sieht

Währungsumrechnung

Odoo speichert Beträge in der Basiswährung des Unternehmens. Für Berichte in mehreren Währungen verknüpfen Sie die Tabelle res_currency_rate:

SELECT
  so.id,
  so.amount_total AS amount_local,
  so.amount_total / COALESCE(
    (SELECT rate FROM res_currency_rate
     WHERE currency_id = so.currency_id
     AND name <= so.date_order::date
     ORDER BY name DESC LIMIT 1),
    1
  ) AS amount_usd
FROM sale_order so;

Alternativ können Sie in Power BI eine Dim_Currency_Rate-Tabelle mit täglichen Wechselkursen verwalten und zum Berichtszeitpunkt DAX für die Konvertierung verwenden. Dieser Ansatz ist flexibler für Was-wäre-wenn-Szenarien (z. B. „Wie würden die Einnahmen bei den Wechselkursen des letzten Jahres aussehen?“).


OData- und REST-API-Integration für Odoo Online

Für Organisationen, die Odoo Online oder Odoo.sh verwenden und kein direkter PostgreSQL-Zugriff verfügbar ist, gibt es alternative Verbindungsmethoden.

Verwendung der JSON-RPC-API von Odoo

Odoo stellt einen JSON-RPC-Endpunkt unter /jsonrpc (oder den älteren XML-RPC unter /xmlrpc/2) bereit. Sie können die Methode search_read aufrufen, um Daten abzurufen:

{
  "jsonrpc": "2.0",
  "method": "call",
  "params": {
    "service": "object",
    "method": "execute_kw",
    "args": [
      "your_database",
      2,
      "your_api_key",
      "sale.order",
      "search_read",
      [[["state", "in", ["sale", "done"]]]],
      {"fields": ["name", "partner_id", "date_order", "amount_total", "state"],
       "limit": 1000, "offset": 0}
    ]
  }
}

In Power BI würden Sie dies als benutzerdefinierte Power Query-Funktion mithilfe von Web.Contents mit Paginierungslogik implementieren. Die Herausforderung liegt in der Leistung: Jeder API-Aufruf gibt höchstens ein paar tausend Datensätze zurück, und für große Datensätze sind mehrere Roundtrips erforderlich.

Community-OData-Module

Mehrere Odoo-Community-Module fügen OData-Endpunkte hinzu:

  • BI Connector für Odoo – stellt konfigurierbare OData-Feeds bereit
  • Odoo-Power BI Connector – vorgefertigte Datenmodelle für gängige Module

Diese Module vereinfachen die Integration, fügen Ihrer Odoo-Instanz jedoch eine Abhängigkeit hinzu. Bewerten Sie, ob der Komfort den Wartungsaufwand eines Community-Moduls überwiegt.

Hybrider Ansatz: Geplanter Datenexport

Ein pragmatischer Mittelweg besteht darin, einen nächtlichen Datenexport von Odoo in eine Staging-Datenbank oder Azure SQL zu planen. Eine geplante Odoo-Aktion führt ein Python-Skript aus, das Schlüsseltabellen in CSV exportiert oder Daten über die API an eine Azure SQL-Datenbank überträgt. Power BI stellt dann eine Verbindung zur Staging-Datenbank mit vollständiger Unterstützung für die Abfragefaltung her.

Dieser Ansatz eignet sich gut für Organisationen, die eine nahezu tägliche Datenaktualität wünschen, ohne die Produktionsdatenbank von Odoo Power BI-Abfragen auszusetzen.


KPI-Beispiele aus der Praxis

Hier sind zwanzig KPIs, die ECOSIRE-Kunden häufig erstellen, nachdem sie Odoo mit Power BI verbunden haben, geordnet nach Abteilung.

Finanz-KPIs

  1. Days Sales Outstanding (DSO) – Durchschnittliche Tage bis zum Zahlungseinzug, ab account_move (Rechnungsdatum vs. Zahlungsdatum)
  2. Bruttomarge % – Umsatz minus COGS dividiert durch Umsatz, aus sale_order_line (price_subtotal vs. Produktstandard_preis)
  3. Bargeldumrechnungszyklus – DSO + Tage ausstehender Lagerbestand – Tage ausstehender Verbindlichkeiten
  4. Budget vs. tatsächliche Abweichung – Erfordert eine Budgettabelle (account_budget in Odoo oder einen manuellen Upload)
  5. Umsatz pro Mitarbeiter – Gesamtumsatz dividiert durch die aktive Mitarbeiterzahl

Vertriebs-KPIs

  1. Kundenakquisekosten – Marketingausgaben dividiert durch gewonnene Neukunden (erfordert manuelle Eingabe der Marketingkosten)
  2. Customer Lifetime Value – Durchschnittlicher Umsatz pro Kunde multipliziert mit der durchschnittlichen Beziehungsdauer
  3. Länge des Verkaufszyklus – Tage von der Opportunity-Erstellung bis zum Gewinn (crm_lead)
  4. Umrechnungsrate von Angebot zu Bestellung – Bestätigte Bestellungen dividiert durch die Gesamtzahl der Angebote
  5. Durchschnittlicher Rabatt % – Aus dem Rabattfeld „sale_order_line“.

Betriebs-KPIs

  1. Perfekte Bestellrate – Bestellungen werden pünktlich, vollständig und mit korrekter Dokumentation geliefert
  2. Bestandsgenauigkeit – Tatsächliche Anzahl im Vergleich zur Systemanzahl (aus stock_quant-Anpassungen)
  3. Lieferzeitzuverlässigkeit – Tatsächliches Eingangsdatum im Vergleich zum erwarteten Datum aus Bestellungen
  4. Lagerraumnutzung – Belegte Standorte dividiert durch die Gesamtzahl der Standorte
  5. Rückgabequote – Gutschriften/Rückerstattungen als Prozentsatz des Gesamtumsatzes

Fertigungs-KPIs

  1. Ausbeute beim ersten Durchgang – Einheiten, die die Qualitätsprüfung ohne Nacharbeit bestanden haben, geteilt durch die Gesamtzahl der Einheiten
  2. Termineinhaltung – Produktionsaufträge werden zum geplanten Datum abgeschlossen
  3. Materialabfall % – Rohmaterial, das über die Stücklistenanforderungen hinaus verbraucht wird
  4. Arbeitsplatzauslastung – Tatsächliche produktive Stunden im Vergleich zu verfügbaren Stunden
  5. Mean Time Between Failures (MTBF) – Durchschnittliche Betriebszeit zwischen Geräteausfällen

Jeder dieser KPIs erfordert spezifische Tabellenverknüpfungen und DAX-Logik. Der Power BI-Implementierungsservice von ECOSIRE umfasst eine Standard-KPI-Bibliothek mit vorgefertigten Kennzahlen für alle zwanzig.


Leistungsoptimierung

Abfragefaltung

Die Abfragefaltung ist das wichtigste Leistungskonzept für Odoo + Power BI-Integrationen. Wenn Power Query eine Transformation „faltet“, übersetzt es den Schritt in SQL und führt ihn auf dem PostgreSQL-Server und nicht in der Power BI-Engine aus.

Schritte, die klappen:

  • Table.SelectRows (WHERE-Klausel)
  • Table.SelectColumns (SELECT bestimmte Spalten)
  • Table.Sort (ORDER BY)
  • Table.Group (GROUP BY)
  • Table.Join (JOIN)
  • Table.FirstN (LIMIT)

Schritte, die das Falten unterbrechen:

  • Table.AddColumn mit benutzerdefinierten M-Funktionen
  • Tabellenpuffer
  • Table.Pivot / Table.Unpivot (in den meisten Fällen)
  • Jeder Schritt, der auf einen nicht faltbaren vorherigen Schritt verweist

Best Practice: Schreiben Sie benutzerdefinierte SQL-Abfragen, anstatt sich auf die Power Query-Faltung zu verlassen. Dies gibt Ihnen die volle Kontrolle über das an PostgreSQL gesendete SQL und eliminiert Faltungsunsicherheiten.

Import vs. DirectQuery

FaktorImportmodusDirectQuery
LeistungSchnell (Daten lokal zwischengespeichert)Langsamer (Abfragen treffen live auf Odoo DB)
DatenaktualitätGeplante Aktualisierung (min. 30 Min.)Echtzeit
ModellgrößeBegrenzt durch den Speicher (1 GB frei, 10–100 GB Premium)Keine Größenbeschränkung
DAX-UnterstützungVollEingeschränkt (einige Funktionen nicht verfügbar)
Auswirkungen auf OdooKeine nach der AktualisierungJede Berichtsinteraktion fragt die Datenbank
EmpfehlungFür die meisten Szenarien verwendenNur verwenden, wenn Echtzeit wichtig ist

Für die meisten Odoo-Bereitstellungen bietet der Importmodus mit inkrementeller Aktualisierung die beste Balance zwischen Leistung und Aktualität. DirectQuery sollte für betriebliche Dashboards reserviert sein, bei denen 30 Minuten alte Daten nicht akzeptabel sind (z. B. eine Live-Anzeige in der Fertigungshalle).

Zusammengesetzte Modelle

Power BI Premium unterstützt zusammengesetzte Modelle, die Import- und DirectQuery-Tabellen kombinieren. Dies ist ideal für Odoo-Integrationen, bei denen:

  • Große historische Tabellen (Kundenaufträge, Journaleinträge) verwenden den Importmodus mit inkrementeller Aktualisierung – Kleine, sich schnell ändernde Tabellen (stock_quant für Live-Inventar) verwenden DirectQuery
  • Die Datumsdimension und andere Dimensionen verwenden den Dual-Speichermodus

Fehlerbehebung bei häufigen Problemen

Verbindungsfehler

„Verbindung zum Server konnte nicht hergestellt werden“ – Stellen Sie sicher, dass PostgreSQL den richtigen Port überwacht (Standard 5432) und dass Firewallregeln eingehende Verbindungen vom Power BI-Gateway oder Ihrer Desktop-IP zulassen. Überprüfen Sie postgresql.conf auf listen_addresses und pg_hba.conf auf Clientauthentifizierungsregeln.

„SSL-Verbindung ist erforderlich“ – Fügen Sie sslmode=require zur Verbindung hinzu. Für selbstsignierte Zertifikate müssen Sie möglicherweise das CA-Zertifikat importieren oder sslmode=allow festlegen (nicht für die Produktion empfohlen).

„Berechtigung für Tabelle verweigert“ – Dem Power BI-Datenbankbenutzer fehlen SELECT-Berechtigungen. Führen Sie GRANT SELECT ON ALL TABLES IN SCHEMA public TO powerbi_readonly; aus und überprüfen Sie es mit \dp table_name in psql.

Probleme mit der Datenqualität

NULL-Werte in kritischen Feldern – Odoo lässt zu, dass viele Felder leer sind. Verwenden Sie COALESCE in SQL-Abfragen oder behandeln Sie BLANK() in DAX, um Berechnungsfehler zu vermeiden.

Doppelte Datensätze – Odoos ORM erstellt während der Bearbeitung manchmal mehrere Versionen von Datensätzen. Filtern Sie nach active = true und stellen Sie sicher, dass Sie das richtige Statusfeld verwenden, um Entwürfe und stornierte Datensätze auszuschließen.

Zeitzonenkonflikte – Odoo speichert Zeitstempel in UTC. Power BI wird standardmäßig in der lokalen Zeitzone angezeigt. Verwenden Sie zur Normalisierung AT TIME ZONE in PostgreSQL-Abfragen oder DateTimeZone.SwitchZone in Power Query.

Leistungsprobleme

Langsame Aktualisierungszeiten – Aktivieren Sie die inkrementelle Aktualisierung. Verwenden Sie benutzerdefinierte SQL-Abfragen, anstatt ganze Tabellen zu importieren. Filtern Sie inaktive Datensätze, Entwurfsdokumente und historische Daten außerhalb Ihres Analysefensters heraus.

Ladezeiten über 10 Sekunden melden – Suchen Sie nach komplexen DAX-Kennzahlen, die über große Tabellen iterieren (SUMX, FILTER mit vielen Zeilen). Verwenden Sie Variablen, um wiederholte Berechnungen zu vermeiden. Erwägen Sie die Voraggregierung von Daten in SQL-Ansichten.

Gateway-Timeouts – Erhöhen Sie das Befehls-Timeout in der Konfiguration der Gateway-Datenquelle. Der Standardwert beträgt 120 Sekunden; für große Odoo-Datenbanken auf 600 eingestellt.


Sicherheitsüberlegungen

Datenbanksicherheit

Verbinden Sie Power BI niemals mit Odoo über den Odoo-Administrator-Datenbankbenutzer. Erstellen Sie wie zuvor gezeigt einen dedizierten schreibgeschützten Benutzer. Erwägen Sie diese zusätzlichen Maßnahmen:

  • Einschränkungen auf Zeilenebene: Verwenden Sie PostgreSQL CREATE POLICY, um den Zugriff des schreibgeschützten Benutzers einzuschränken, wenn Sie nicht möchten, dass Power BI auf alle Tabellen zugreift (z. B. mit Ausnahme von hr_payslip).
  • Spaltenmaskierung: Erstellen Sie Ansichten, die vertrauliche Spalten (Gehalt, Sozialversicherungsnummer, Bankdaten) ausschließen, und gewähren Sie Power BI Zugriff auf Ansichten anstelle von Basistabellen
  • Verbindungsverschlüsselung: Verwenden Sie immer SSL für PostgreSQL-Verbindungen, insbesondere wenn sich das Power BI-Gateway und die Odoo-Datenbank in unterschiedlichen Netzwerken befinden
  • Überwachungsprotokollierung: Aktivieren Sie PostgreSQL pgaudit, um alle Abfragen des Power BI-Benutzers zu verfolgen

Power BI-Sicherheit

  • Implementieren Sie Sicherheit auf Zeilenebene (RLS) in Power BI, die die unternehmensübergreifenden Zugriffsregeln von Odoo widerspiegelt
  • Verwenden Sie Vertraulichkeitsbezeichnungen für Datensätze, die Finanz- oder HR-Daten enthalten
  • Beschränken Sie den Zugriff auf den Arbeitsbereich auf autorisierte Analysten und Verbraucher – Deaktivieren Sie den Datenexport für vertrauliche Berichte, um die Datenexfiltration zu verhindern

Ausführliche Informationen zur Power BI-Sicherheit finden Sie in unserem Leitfaden zur Sicherheitsimplementierung auf Zeilenebene.


Alles zusammenfügen: Implementierungs-Roadmap

Phase 1: Gründung (Woche 1-2)

  1. Erstellen Sie den schreibgeschützten PostgreSQL-Benutzer in der Odoo-Datenbank
  2. Installieren und konfigurieren Sie das lokale Datengateway (bei Verwendung des Power BI-Dienstes).
  3. Verbinden Sie Power BI Desktop mit der Odoo-Datenbank
  4. Importieren Sie die fünf Kerntabellengruppen (Verkauf, Buchhaltung, Lagerbestand, Fertigung, Personalwesen).
  5. Erstellen Sie die Datumsdimension und stellen Sie Beziehungen her

Phase 2: Kern-Dashboards (Woche 3–4)

  1. Erstellen Sie das Vertriebs-Dashboard für Führungskräfte (Umsatz, Wachstum, Top-Produkte, Pipeline)
  2. Erstellen Sie das Finanz-Dashboard (AR-Alterung, Cashflow, Budgetabweichung)
  3. Erstellen Sie das Inventar-Dashboard (Lagerbestände, Umsatz, Nachbestellungsbenachrichtigungen).
  4. Konfigurieren Sie die inkrementelle Aktualisierung für alle Faktentabellen
  5. Veröffentlichen Sie es im Power BI-Dienst und richten Sie eine geplante Aktualisierung ein

Phase 3: Advanced Analytics (Woche 5–6)

  1. Erstellen Sie Fertigungs-Dashboards (OEE, Auslastung, Produktionsplanung)
  2. Erstellen Sie HR-Dashboards (Mitarbeiterzahl, Fluktuation, Anwesenheit, Abwesenheit).
  3. Implementieren Sie Sicherheit auf Zeilenebene für die unternehmensübergreifende Datenisolierung
  4. Erstellen Sie ein für Mobilgeräte optimiertes Layout für wichtige Dashboards
  5. Richten Sie Datenwarnungen für kritische KPIs (Lagerbestände, überfällige Rechnungen, Produktionsverzögerungen) ein.

Phase 4: Governance und Skalierung (Woche 7–8)

  1. Legen Sie Namenskonventionen für Arbeitsbereiche und eine Inhaltszertifizierung fest
  2. Schulen Sie Power-User in der Erstellung von Self-Service-Berichten
  3. Dokumentieren Sie das Datenmodell und die Berechnungslogik
  4. Richten Sie eine Nutzungsüberwachung ein, um die Akzeptanz zu verfolgen
  5. Planen Sie zusätzliche Datenquellen ein (Marketingplattformen, E-Commerce, IoT)

Der Power BI + Odoo-Integrationsdienst von ECOSIRE folgt dieser Roadmap und liefert das erste Executive Dashboard in der Regel innerhalb von zwei Wochen. Die doppelte Expertise unseres Teams im Datenmodell von Odoo und der Analyse-Engine von Power BI stellt sicher, dass Sie vom ersten Tag an genaue, leistungsstarke und kontrollierte Analysen erhalten.


FAQ

Kann ich Power BI mit Odoo Online oder nur mit selbst gehostetem Odoo verbinden?

Sie können eine Verbindung zu beiden herstellen, die Methode ist jedoch unterschiedlich. Mit selbst gehostetem Odoo erhalten Sie direkten PostgreSQL-Zugriff, der schneller und flexibler ist. Odoo Online und Odoo.sh stellen die Datenbank nicht direkt zur Verfügung, daher müssen Sie die JSON-RPC-API von Odoo, ein Community-OData-Connector-Modul oder einen geplanten Datenexport in eine Staging-Datenbank verwenden. Für Odoo Online mit großen Datensätzen wird der Staging-Datenbankansatz empfohlen, da die API-basierte Extraktion für Tabellen mit mehr als 50.000 Datensätzen langsam ist.

Wie oft kann Power BI Daten aus Odoo aktualisieren?

Mit Power BI Pro können Sie bis zu 8 Aktualisierungen pro Tag (alle 3 Stunden) planen. Mit Power BI Premium können Sie bis zu 48 Aktualisierungen pro Tag (alle 30 Minuten) planen. Für Echtzeitdaten verwenden Sie den DirectQuery-Modus. Beachten Sie jedoch, dass bei jeder Berichtsinteraktion Ihre Odoo-Datenbank direkt abgefragt wird. Die inkrementelle Aktualisierung verkürzt die Zeit, die jede Aktualisierung benötigt, sodass häufigere Aktualisierungen möglich sind, ohne die Datenbank zu überlasten.

Werden Power BI-Abfragen unser Odoo-System verlangsamen?

Wenn Sie den Importmodus verwenden (empfohlen), werden Power BI-Abfragen nur während geplanter Aktualisierungen ausgeführt – normalerweise außerhalb der Hauptverkehrszeiten. Die Auswirkungen auf die Odoo-Leistung sind minimal. Wenn Sie DirectQuery verwenden, generiert jede Berichtsinteraktion Live-Abfragen für Ihre Odoo-Datenbank, was sich auf die Leistung während der Geschäftszeiten auswirken kann. Zu den Abhilfemaßnahmen gehören die Verwendung eines Lesereplikats, das Konfigurieren von Abfrage-Timeouts und das Entwerfen effizienter SQL-Abfragen, die Indizes verwenden.

Muss ich SQL-Kenntnisse haben, um die Integration einzurichten?

Grundlegende SQL-Kenntnisse sind hilfreich, aber nicht unbedingt erforderlich. Mit der Power Query-Schnittstelle von Power BI können Sie Tabellen auswählen und Filter visuell anwenden. Für optimale Leistung und Datenqualität werden jedoch benutzerdefinierte SQL-Abfragen dringend empfohlen. Sie ermöglichen es Ihnen, Tabellen vorab zu verknüpfen, unnötige Datensätze zu filtern und die Daten auf Datenbankebene zu gestalten. Wenn es Ihrem Team an SQL-Kenntnissen mangelt, sollten Sie erwägen, einen Spezialisten für die Ersteinrichtung und die anschließende Pflege der Berichte mit den visuellen Tools von Power BI zu beauftragen.

Wie unterscheidet sich der Odoo + Power BI-Service von ECOSIRE von der generischen Power BI-Beratung?

Die meisten Power BI-Beratungsunternehmen verfügen über Fachwissen in Power BI, aber nur begrenzte Kenntnisse über das Datenmodell von Odoo. Sie verbringen Wochen damit, Tabellenbeziehungen zurückzuentwickeln, Odoo-spezifische Konventionen zu verstehen (wie die duale Struktur „product_product“ und „product_template“) und herauszufinden, welche Felder sinnvoll sind. ECOSIRE hat über 43 Odoo-Module entwickelt und bereitgestellt und verfügt über umfassendes Fachwissen in beiden Plattformen. Wir bieten vorgefertigte Datenmodelle, eine Standard-KPI-Bibliothek mit über 50 Kennzahlen und Odoo-spezifische Optimierungen wie die inkrementelle Aktualisierung von write_date-Spalten. Diese doppelte Expertise reduziert die Implementierungszeit um 40–60 Prozent im Vergleich zu Teams, die das Datenmodell von Odoo von Grund auf erlernen.

E

Geschrieben von

ECOSIRE Research and Development Team

Entwicklung von Enterprise-Digitalprodukten bei ECOSIRE. Einblicke in Odoo-Integrationen, E-Commerce-Automatisierung und KI-gestützte Geschäftslösungen.

Mehr aus Data Analytics & BI

Vollständiger Leitfaden zur Power BI-Dashboard-Entwicklung

Erfahren Sie, wie Sie effektive Power BI-Dashboards mit KPI-Design, visuellen Best Practices, Drill-Through-Seiten, Lesezeichen, mobilen Layouts und RLS-Sicherheit erstellen.

DAX-Formeln, die jeder Geschäftsanwender kennen sollte

Beherrschen Sie 20 wichtige DAX-Formeln für Power BI. CALCULATE, Zeitintelligenz, RANKX, Kontextübergang, Iteratoren und praktische Geschäftsbeispiele.

Power BI Embedded: Hinzufügen von Analysen zu Ihrer Anwendung

Betten Sie Power BI-Analysen in Ihre SaaS-App ein. Deckt Authentifizierung, mandantenfähiges RLS, Kapazitätsdimensionierung, JavaScript SDK, benutzerdefinierte Designs und Fabric-Preise ab.

Migration von Excel zu Power BI: Schritt-für-Schritt-Anleitung

Vollständiger Leitfaden zur Migration von Excel zu Power BI mit Formelübersetzung, Datenmodellerstellung, Power Query, Validierung und Außerbetriebnahme.

Messung des KI-ROI in Unternehmen: Ein Rahmenwerk, das tatsächlich funktioniert

Ein praktischer Rahmen zur Messung des KI-Return on Investment, der direkte Einsparungen, Produktivitätssteigerungen, Umsatzauswirkungen und strategischen Wert über Abteilungen hinweg umfasst.

Erstellen von Finanzberichts-Dashboards: KPIs, Design und ERP-Integration

Entwerfen Sie Dashboards für die Finanzberichterstattung, die Entscheidungen vorantreiben. Erfahren Sie, welche KPIs Sie verfolgen sollten, welche Dashboard-Designprinzipien es gibt und welche Best Practices für die ERP-Integration Sie nutzen.

Chatten Sie auf WhatsApp