Immer mehr Unternehmen bauen zur Abbildung ihrer Unternehmensprozesse auf die Unterstützung der ERP-Lösung Odoo, welche insbesondere durch ihre Offenheit und ein intuitives sowie modernes Design zu überzeugen weiß. Die zentralisierte und digitalisierte Haltung der Daten birgt dabei einen wahren Schatz, welcher vielen Unternehmen in seiner Vollkommenheit erst nach und nach wirklich bewusst wird. Schließlich kann die zielgerichtete Nutzung der gewonnenen Datenvielfalt zur Identifizierung von Stärken, Schwächen und Trends als handlungsrelevante Informationen die nachhaltige Steuerung der Unternehmensgeschicke oft maßgebend erleichtern. So erhalten wir als ERP- und BI-Dienstleister zuletzt immer häufiger Anfragen nach Möglichkeiten, die im System vorhandenen Daten gemäß den individuellen Anforderungen in Berichtsform aufbereitet auszugeben. Oft reichen die im Odoo-Standard vorhandenen Berichtsvorlagen hierfür nicht mehr aus, insbesondere wenn durch Customizing und einen hohen Grad an Spezialisierung des ERP-Systems die Komplexität und Anforderung an die auszuwertenden Daten steigt.
Vor allem Power BI als Reportingtool hat bei vielen Odoo-Bestandskunden wie auch extern betreuten Odoo-Kunden das Interesse geweckt, da sich hierüber mit vergleichsweise kleinem Aufwand schnell erste überzeugende Ergebnisse erzielen lassen, die zumeist den Wunsch nach umfassenderen Auswertungen wecken und klar machen, weswegen für ein seriöses Reporting die Nutzung eines BI-Systems, parallel zu einem ERP-System, nach wie vor unumgänglich ist.
Zunächst stellt sich den Interessenten oft die Frage wie, in welchem Umfang und ob die Anbindung von Power BI an Odoo überhaupt möglich ist. Letzteres kann in jedem Fall bejaht werden - grundsätzlich kann jedes Odoo-System an Power BI angebunden werden und als Datenquelle für entsprechende Berichte genutzt werden. Ausschlaggebend für die Art und die Möglichkeiten der Anbindung ist in erster Linie die Form des Odoo-Hostings, also die Variante in welcher das Odoo-System bereitgestellt wird.
Ziel dieses Blogbeitrages ist es, einen Großteil der offenen Fragen rund um die Anbindung von Power BI an Odoo zu klären. Von den Odoo-Hosting-Typen als entscheidende Grundlage, der Definition der Anbindungsoptionen samt den Eigenschaften, den Voraussetzungen sowie möglichen Vor- und Nachteilen bis hin zu einer Empfehlung gemäß den Gegebenheiten versuchen wir, die relevanten Themen hierzu möglichst knapp aber vollständig abzubilden.
Odoo-Edition und Hosting-Plattform als Grundlage
Grundlegend für die Optionen ein Odoo-System an Power BI anbinden zu können ist die zugrundeliegende Odoo-Hosting-Plattform, welche durch die Odoo-Version eingeschränkt wird. Odoo wird in der Enterprise-Variante als lizensierte Version sowie in der Community-Variante als freie Open-Source-Version angeboten. In Abhängigkeit dieser Version bieten sich mehrere Hosting-Plattformen an, die im groben definieren, wie der Datenbankzugriff erfolgt sowie wie hoch der Pflegeaufwand für das Odoo-System letztlich ausfällt. Es gibt drei mögliche Hosting-Plattformen, wobei in der Community-Variante lediglich der Typ On-Premises angeboten wird. In Odoo Enterprise kommen die Typen Odoo Online und Odoo.sh als mögliche Optionen hinzu.
Die Differenzierung zwischen den Versionen soll an dieser Stelle nicht im Detail erläutert werden und ist in knapper Form der nachstehenden Tabelle zu entnehmen, die direkt von Odoo übernommen und ergänzt wurde. Wesentlich für die Anbindung ist nur, dass es sich bei Odoo Online (SaaS - Software as a Service) und Odoo.sh (PaaS - Platform as a Service) um Cloud-Hostings handelt, die nach außen keinen direkten Zugriff auf die Datenbank gewähren. Im Gegensatz dazu bietet die On-Premises-Lösung als lokale, offline Variante des Hostings zusätzlich die Option einen direkten Datenbankzugriff zu gewährleisten.
Power BI selbst bietet zur Anbindung von Odoo prinzipiell zwei Wege an, die sich in drei Varianten umsetzen lassen. Neben dem direkten Datenbankzugriff über den hauseigenen PostgreSQL-Connector oder ODBC ist ein API-Zugriff über die XMLRPC-Schnittstelle möglich. Entsprechend der verschiedenen Hosting-Typen ergeben sich daher für Power BI folgende Anbindungsmöglichkeiten in Abhängigkeit vom Odoo-Hosting:
Eigenschaften sowie Vor- und Nachteile der Anbindungsoptionen
Die drei präsentierten Anbindungsmethoden bzw. Datenquellen können anhand ihrer Funktionsvielfalt, Eigenschaften und Voraussetzungen differenziert werden, auf welche wir nun nach Themenbereichen getrennt eingehen.
Der Datenabruf erfolgt zunächst für alle drei Datenquellen über die Standardmaske in Power BI Desktop, wobei der PostgreSQL-Connector im Bereich Datenbank und die anderen beiden Quellen im Bereich Sonstige zu finden sind, wie im nachstehenden Screenshot ersichtlich wird. Um einen komplikationslosen Abruf der Daten zu gewährleisten, ist zunächst ein gewisser Konfigurationsaufwand notwendig, welcher neben den Vorbereitungen für die Ersteinrichtung und der Bereitstellung der Voraussetzungen auch den Pflegeaufwand für nachträgliche Anpassungen umfasst und sich für die drei Datenquellen teils deutlich unterscheidet.
Bei allen Datenquellen gleich ist die Anforderung einer Windows-Umgebung als Betriebssystem, welche als Anforderung für Power BI Desktop obligatorisch ist. Darüber hinaus werden für die Datenbankverbindungen verschiedene Treiber nötig. Der Power Query spezifische PostgreSQL-Connector benötigt einen Npgsql-Treiber, um die .NET-Anbindung an die PostgreSQL-Datenbank gewährleisten zu können. Für ODBC wird dementsprechend ein generischer ODBC-Treiber nötig, der in seinem Funktionsumfang und in seiner Performance unterlegen ist, dafür aber im Sachen Kompatibilität und Verfügbarkeit punkten kann. Für die API-Anbindung muss Python mit den Paketen Pandas und Matplotlib vorinstalliert werden. Power BI erkennt das Python-Quellverzeichnis automatisch, sodass an dieser Stelle, wie auch nach Installation der entsprechenden Datenbanktreiber, keinerlei weitere Vorkonfiguration nötig ist.
Nach Bereitstellung der entsprechenden Voraussetzungen gestaltet sich die Anbindung über den PostgreSQL-Connector am einfachsten, über welchen durch Angabe von Server, Datenbank und Authentifizierungsinformationen über eine Eingabemaske der Zugang zu den Daten bereitsteht. Die Einrichtung via ODBC gestaltet sich durch die Übergabe der entsprechenden Informationen mittels einer in Windows vorkonfigurierten DSN-Zeichenfolge (Data Source Name, Datenquellenname) oder alternativ einer direkten Treiberverbindungs-Zeichenfolge marginal aufwendiger aber prinzipiell sehr ähnlich. Die Anbindung über Python ist verglichen deutlich aufwendiger, da hierfür Kenntnisse über die Odoo-API, Python sowie die Eigenarten der Datenübergabe an Power BI aus Python-Skripten heraus notwendig sind. So ist es beispielsweise notwendig alle über API abgefragten Felder als Dataframe zu übergeben, da Power BI keine anderweitigen Rückgaben in Tabellenform darstellen kann. In folgendem Screenshot für die Anbindung des Objekts product.product wird ersichtlich, wie eine solche exemplarische Python-Skript-Lösung aussehen kann. Für jede weitere Tabelle ist ein weiteres Skript notwendig, welches entsprechend des gewünschten Objekts und anhand dieses Beispiels mindestens für die Parameter table und table_columns angepasst werden müsste.
Der größere Aufwand der Ersteinrichtung über die API gewährt im Anschluss den Vorteil, ein umfangreicheres Set an Feldern direkt über die Methoden aus Odoo heraus abfragen zu können, da viele berechnete oder verknüpfte Feldwerte auf Datenbankebene nur indirekt über Verknüpfung mehrerer Tabellen abgefragt werden können oder gar eigenständig berechnet werden müssten. Anpassungen im Nachgang bzw. die Pflege der Datenquellen gestaltet sich hinsichtlich des Aufwands für alle Datenquellen ähnlich - neue Felder werden schlicht im Skript ergänzt oder im Connector ausgewählt und andernfalls gelöscht oder abgewählt. Gegebenenfalls ist das Rechtemanagement anzupassen, was bei ordnungsgemäßer Konfiguration allerdings in jedem Fall stattfinden muss und daher für alle Quellen den gleichen Aufwand nach sich zieht.
Die Aktualisierung der Daten über Power BI Desktop und Service wird von allen Datenquellen unterstützt. Unterschiede gibt es an dieser Stelle nur bei der Installation und Konfiguration der Datengateways, welche insbesondere für automatisierte und geplante Aktualisierungen von Bedeutung sind. Für Python-Skript-Anbindungen wird ein spezielles sogenanntes On-premises data gateway personal mode notwendig. Da dieses parallel zum normalen Gateway installiert werden kann, über welches alle weiteren Datenquellen eingerichtet werden, stellt dieser Umstand lediglich Mehraufwand, allerdings keine Funktionseinschränkung dar.
Power BI bietet neben der Möglichkeit die Daten in den Speicher zu importieren die Option einer sogenannten DirectQuery-Verbindung. Hier werden die Daten zur Laufzeit bei Erstellung eines Visuals im Report direkt als Abfrage an die Datenquelle gesendet, ohne die Daten vorher im RAM zwischenzuspeichern. Hervorzuheben ist, dass die Performance in diesem Fall hauptsächlich von der Datenquelle abhängt und jene daher eine gute interaktive Abfrageleistung bieten sollte. Die Nutzung von DirectQuery kann sinnvoll sein, wenn die zugrundeliegenden Daten häufig geändert werden, eine hohe Aktualisierungsfrequenz gefordert ist, sehr große Datenmengen abgerufen oder die Daten aus multidimensionalen Quellen entnommen werden. Als Trade-off bestehen bei Nutzung von DirectQuery Modellierungseinschränkungen, begrenzte Möglichkeiten der Datentransformation sowie Einschränkungen bei der Berichterstattung, sodass hier sinnvoll abgewägt werden muss. In jedem Fall bietet die Nutzung von DirectQuery mehr Flexibilität und steigert den Funktionsumfang einer Datenquelle, was zum jetzigen Zeitpunkt nur über den PostgreSQL-Connector gewährleistet werden kann.
Eine weitere Differenzierung ist anhand des erst vor wenigen Jahren eingeführten Features der Power BI Dataflows möglich. Über Dataflows werden Daten aus unterschiedlichen Quellen direkt in der Cloud gespeichert ohne extra vorgehalten werden zu müssen. In Power BI Service werden die Daten hierfür über einen eigenen Arbeitsbereich unter Nutzung der Funktionalitäten von Power Query angebunden, aufbereitet, verknüpft und modelliert. Die Abfragen entsprechen wie in Power BI Desktop eigenen Tabellen und werden als Entitäten im sogenannten Microsoft Azure Data Lage Gen 2 Storage in der Cloud hinterlegt, ohne lokale Ressourcen zu belasten. Die darüber erzeugte Transformationslogik ist wiederverwendbar, kann von verschiedenen Datasets und Berichten in Power BI gemeinsam genutzt werden und kann anders als vordefinierte Datasets spezifischer Berichte auch stets im Nachgang modifiziert oder erweitert werden. Als Datenquellen können in Dataflows derzeit nur PostgreSQL und ODBC genutzt werden, sodass Python-Skripte von der Zusatzfunktionalität, direkt in der Cloud definiert werden zu können, ausgeschlossen sind.
Die Abfragefaltung (Query Folding) ist ein mächtiges Werkzeug in Power BI Desktop, welches es ermöglicht, Abfragen über mehrere wohlbedachte Transformationsschritte hinweg zu aggregieren und so möglichst komplexe Abfragen direkt an die zugrundeliegende Datenquelle weiterzuleiten, um die Power BI Umgebung zu entlasten. Query Folding wird nur für Datenbanken als Quellsystem unterstützt, sodass auch hier Python-Skripte außen vorgelassen werden müssen, was im Umkehrschluss die Last bei Nutzung letzterer auf das Power BI System erhöht. In nachstehender Tabelle sind die genannten Erkenntnisse nochmals kompakt zusammengefasst - wie sich zeigt bietet der PostgreSQL-Connector den größten Funktionsumfang, gefolgt vom ODBC-Connector und der Anbindung via Python.
Hinsichtlich der Performance ist insbesondere durch die Möglichkeit der Nutzung von DirectQuery bei sehr großen Datensätzen sowie die allgemeinen Performancevorteile über die .NET-Anbindung der bereitgestellte PostgreSQL-Connector klar zu bevorzugen. Die Anbindung von Odoo über die API ist durch fehlendes Query Folding und die natürlichen Restriktionen im Vergleich am trägsten und sollte für große Datenmengen dringend überdacht werden bzw. auf die nötigsten Datensätze schon bei Abruf der Daten beschränkt werden. Alternativ besteht die Möglichkeit, die in der Odoo-Cloud bereitgestellten Datenbank-Backups über eine Routine regelmäßig auf eine lokale Datenbank zu übertragen, über welche der Zugriff alternativ stattfinden kann. Um an dieser Stelle die Performance zusätzlich zu verbessern, sollte vor allem auch die Vorkonfiguration sinnvoller Views auf der Datenbank selbst in Betracht gezogen werden, um durch Abfrage dieser möglichst viel Last aus dem ETL-Prozess und vom Power BI-System selbst auszulagern.
Generell ist das Thema Sicherheit in keinem der vorgestellten Datenquellen als problematisch zu betrachten. So kann die Verbindung zur Datenbank SSL-verschlüsselt werden, wobei sich hierbei die Konfiguration im Falle des PostgreSQL-Connectors der Erfahrung nach als aufwendiger und anspruchsvoller erwiesen hat. Über die Authentifizierung und genaue Definition der Zugriffsrechte, sei es in der PostgreSQL-Datenbank oder Odoo selbst für die API-Anbindung, wird ferner der Zugang gewährt und auf für die Auswertung notwendige Daten über Leserechte beschränkt. Voraussetzung ist an dieser Stelle vor allem ein vorangestelltes und durchdachtes Rechtemanagement samt Konfiguration auf Datenbank- und Odoo-Ebene.
Die Verfügbarkeit im Sinne der Flexibilität in der Anwendung ist bei der Datenbankanbindung ein wenig beschränkt, da Odoo-Cloud-Systeme nicht nativ angebunden werden können. Hier liegt die API-Anbindung naturgemäß im Vorteil, da diese unabhängig vom Hosting jederzeit eine mögliche Option zur Umsetzung darstellt. Wie erwähnt kann diese Einschränkung alternativ über Umwege umgangen werden, indem der Datenbankzugriff durch ein regelmäßiges Datenbankupdate über den Export der online verfügbaren Datenbankbackups gewährleistet wird.
Unter Abwägung der unterschiedlichen Eigenschaften der genannten Datenquellen und der Annahme einer möglichst optimalen Konfiguration kann die Bewertung dieser entsprechend nachstehender Tabelle zusammengefasst werden.
Grundsätzlich empfehlen wir aus genannten Gründen immer zunächst den PostgreSQL-Connector als Datenquelle in Betracht zu ziehen und nur im Falle von Kompatibilitäts- oder Stabilitätsproblemen auf ODBC auszuweichen. Sollte sich das zugrundeliegende Odoo-System in der Cloud befinden, bleibt nur der Schritt zur Nutzung eines dedizierten Python-Skripts, soweit die Daten nicht zusätzlich über eine tägliche Routine gesondert in einer weiteren lokalen Datenbank gehalten werden, die eine optionale Datenbankverbindung ermöglichen würde.
Haben auch Sie Interesse, Ihre Projekte intern auszuwerten oder suchen Sie nach an einer Business Intelligence-Lösung? Kontaktieren Sie uns jetzt und wir stehen Ihnen gerne als zuverlässiger Partner zur Seite!
Quellen: www.odoo.com, www.odoo.com, https://docs.microsoft.com/de-de/power-bi, https://docs.microsoft.com/de-de/power-query
Odoo-Anbindung in Power BI