MongoDB gibt selbst an “die beliebteste Datenbank für moderne Apps” zu sein. MongoDB ist eine NoSQL Datenbank, welche die Daten in einem JSON-ähnlichen Dokumentenformat speichert. Zuvor hatte ich keine Berührungen mit der MongoDB und war davon ausgegangen, dass eine Anbindung an Power BI einfach umzusetzen wäre.
Daten und -quellen sind die Basis für Berichte und Dasbhboards. Normalerweise gibt es in Microsoft Power BI jede Menge Konnektoren für Datenquellen (siehe auch Artikel Power BI-Datenquellen in Microsoft Docs), aber kurioserweise gibt es keinen Konnektor für MongoDB. Entsprechend schwierig bzw. kompliziert hat sich die Anbindung gestaltet. Die Anbindung habe ich hier mit allen notwendigen Schritten dokumentiert.
MongoDB Atlas
Mit MongoDB Atlas stellen die Entwickler von MongoDB eine vollständig verwaltete NoSQL-Datenbank in der Cloud zur Verfügung. Ein Database-as-a-Service.
Ein MongoDB Cluster erstellen
Für unser Szenario fangen wir beim MongoDB Cluster an und erstellen ein erstes Cluster. Dazu loggen wir uns in MongoDB Atlas ein und klicken unter Data Storage > Clusters auf Build a Cluster.
Für eine Sandbox-Umgebung wählen wir Shared Clusters aus und klicken auf Create a cluster.
Bei der Cluster Konfiguration können wir den Cloud Provider, die Region, einen Namen für das Cluster sowie die Cluster Tier auswählen. Für die Sandbox-Umgebung wähle ich als Cloud Provider AWS und als Cluster Tier M0 Sandbox aus.
Um das Cluster zu erstellen, klicken wir auf Create Cluster. Die Bereitstellung dauert ca. 3 Minuten. Zeit zum Kaffee holen.
Das Cluster wurde erfolgreich erstellt. Im nächsten Schritt werden wir den Zugriff auf das Cluster von Extern zulassen.
Dazu klicken wir auf die Schaltfläche Connect im Bereich Sandbox und dem Namen unseres Clusters (in meinem Fall IAMYB). Im Dialog Connect to IAMYB wählen wir unter Add a connection IP address > Allow Access from Anywhere aus. Für den Datenbankbenutzer wähle ich als Benutzernamen yb und als Passwort wählen ich einen auto-generiertes Passwort mit einem Klick auf Autogenerate Secure Password.
So sieht der Dialog anschließend aus.
Mit der IP 0.0.0.0/0 wird angegeben, dass alle IP-Adresen zulässig sind. Klicken auf Add IP Address um das zu übernehmen. Danach klicken wir auf Create Database User um den Datenbankbenutzer zu erstellen.
Wenn alles in Ordnung ist, können wir mit einem Klick auf Choose a connection method weitermachen. Nun müssen wir auswählen, wie wir uns mit der MongoDB Datenbank verbinden möchten. Das gibt uns dann den Connection-String zurück. Wir wählen in unserem Fall Connect your application.
Um die richtige Form des Connection-Strings zu erhalten müssen wir bei Select your driver and version unter DRIVER Node.js und VERSION 2.2.12 or later auswählen. Danach kopieren wir uns den Connection-String raus in bspw. Notepad. Klicken auf Close und schließen den Dialog.
Beispieldaten in die MongoDB Datenbank importieren
Damit wir Beispieldaten haben, importiere ich einen Sample Dataset. Dazu wähle ich im Menü unter DATA STORAGE > Clusters aus. In Clusters > Sandbox klicke ich auf die drei Punkte … neben COLLECTIONS und wähle aus der Liste Load Sample Dataset aus (Liste der Datasets gibt es hier).
Im nächsten Dialog bestätigen wir den Import mit einem Klick auf Load Sample Dataset.
MongoDB Connector for BI und MongoDB ODBC Driver for BI Connector einrichten
Um einen Zugriff auf die in MongoDB Atlas gehostete MongoDB Datenbank einzurichten, sind zwei Komponenten notwendig.
Der MongoDB Connector for BI ist eine Bridge bzw. ein Gateway zu der MongoDB Datenbank. Der MongoDB ODBC Driver for BI Connector ist ein ODBC Treiber, mit dessen Hilfe wir eine ODBC-Datenquelle zu der MongoDB hinzufügen können.
MongoDB Connector for BI
Der MongoDB Connector for BI kann unter dem Link https://www.mongodb.com/try/download/bi-connector heruntergeladen werden.
Die derzeit aktuelle Version ist die 2.14.3. Ãœber Download laden wir die Datei herunter und starten die heruntergeladene .msi Datei (mongodb-bi-win32-x86_64-v2.14.3.msi).
Klicken auf Next und akzeptieren die End-User License Agreement. Klicken erneut auf Next.
Im Dialog Custom Setup können wir den Installations-Pfad anpassen. Ich belasse es beim Standard und klicke auf Next.
Den Installations-Pfad C:\Program Files\MongoDB\Connector for BI\2.14 merken wir uns. Mit einem Klick auf Install starten wir die Installation.
Done! Im nächsten Schritt müssen wir den Installations-Pfad zu der Path-Variable hinzufügen.
Um den Installations-Pfad zu der Path-Variable hinzuzufügen, öffnen wir aus der Systemsteuerung > Systemumgebungsvariablen bearbeiten.
In den Systemeigenschaften klicken wir auf Umgebungsvariablen… .
Im Dialog Umgebungsvariablen doppelklicken wir in der Liste Systemvariablen auf Path.
Im Fenster Umgebungsvariablen bearbeiten klicken wir auf Neu, geben in der Liste den Installations-Pfad + “\bin” ein und klicken auf OK.
Um die Installations und die Funktion zu testen öffnen wir die Eingabeaufforderung und geben in der KOmmandozeile nachfolgenden Befehl ein.
mongosqld --version
MongoDB ODBC Driver for BI Connector
Die nächste Komponente die installiert werden muss ist der MongoDB ODBC Driver for BI Connector. Diesen können wir unter dem Link https://github.com/mongodb/mongo-odbc-driver/releases/ herunterladen. Hier wählen wir das richtige Paket passend zu unserer Umgebung aus. In unserem Windows 10 Fall ist es das Paket mongodb-connector-odbc-1.4.2-win-64-bit.msi.
Danach starten wir das heruntergeladene Paket mongodb-connector-odbc-1.4.2-win-64-bit.msi.
Klicken auf Next und nehmen im nächsten Dialog das End-User License Agreement an.
Das Dialog Custom Setup erfordert keine Anpassungen. Mit Klick auf Next geht es weiter.
Klick auf Install startet die Installation.
Nach Abschluss der Installation können wir die Installation per Finish beenden.
mongosqld starten
Um die Bridge zu starten, benötigen wir den richtigen Connection-String. Im Portal haben wir nachfolgenden Connection-String erhalten:
mongodb://yb:<password>@iamyb-shard-00-00.6pjlz.mongodb.net:27017,iamyb-shard-00-01.6pjlz.mongodb.net:27017,iamyb-shard-00-02.6pjlz.mongodb.net:27017/myFirstDatabase?ssl=true&replicaSet=atlas-juun90-shard-0&authSource=admin&retryWrites=true&w=majority
mongogsqld akzeptiert nachfolgendes Format für einen Connection-String, so dass wir unseren vorhandenen Connection-String dahingehend anpassen müssen.
mongodb://<host replica node 1><:port>,<host replica node 2><:port>,<host replica node n><:port>/?replicaset=<replicaset>&retryWrites=true&w=majority
Folglich sieht der benötigte Connection-String wie folgt aus:
mongodb://iamyb-shard-00-00.6pjlz.mongodb.net:27017,iamyb-shard-00-01.6pjlz.mongodb.net:27017,iamyb-shard-00-02.6pjlz.mongodb.net:27017/?replicaSet=atlas-juun90-shard-0&retryWrites=true&w=majority
Um den mongosqld zu starten geben wir nachfolgenden Befehl in der Eingabeaufforderung ein.
mongosqld --mongo-uri "mongodb://iamyb-shard-00-00.6pjlz.mongodb.net:27017,iamyb-shard-00-01.6pjlz.mongodb.net:27017,iamyb-shard-00-02.6pjlz.mongodb.net:27017/?replicaSet=atlas-juun90-shard-0&retryWrites=true&w=majority" --mongo-ssl --auth --mongo-username yb --mongo-password <password>
Wenn alles funktioniert hat, sollte die Ausgabe wie folgt aussehen:
#Eine System DNS erstellen
In der Ausgabe sehen wir, dass die Bridge unter der Adresse 127.0.0.1 und Port 3307 auf Verbindungen wartet. Damit Power BI mit der MongoDB Datenbank kommunizieren kann, bedarf es jedoch noch der Einrichtung eines System DSN. Dazu geben wir in der Windows Suche ODBC ein und starten ODBC-Datenquellen (64-Bit).
Klicken dann im Reiter System-DSN auf Hinzufügen… .
Aus der Liste der Treiber wähle ich MongoDB ODBC 1.4.2 Unicode Driver aus und klicken auf Fertig stellen.
Im Dialog MongoDB ODBC Data Source Configuration geben wir nachfolgende Werte in die Felder ein.
Data Source Name | BX-MongoDB-PowerBI-Demo |
TCP/IP Server | 127.0.0.1 |
Port | 3307 |
User | yb |
Password | <password> |
Database | Aus der DropDown-Liste auswählen: “sample_airbnb” |
Mit einem Klick auf Test können wir die Verbindung testen.
Parallel erfolgt eine Log-Ausgabe in der Konsole wo man sehen kann was alles passiert. Damit ist die Einrichtung der System-DSN abgeschlossen. Im nächsten Schritt geht es nun darum, die Datenbank aus Power BI heraus anzubinden.
Power BI Test
Wir starten Power BI Desktop und klicken auf Get data from another source.
Im Dialog Get Data geben wir in das Suchfeld ODBC ein und wählen auf der rechten Seite ODBC aus und klicken auf Connect.
Wählen im Dialog From ODBC in der Liste Data source name (DSN) die zuvor erstellte System-DSN (BX-MongoDB-PowerBI-Demo) aus und klicken auf OK.
Im letzten Schritt müssen wir noch den (Datenbank-) Benutzer und das dazugehörige Passwort angeben. Via Klick auf Connect bestätigen wir die Eingaben.
Wenn die Verbindung erfolgreich war, können wir im Navigator die vorhandenen Entitäten sehen. Unter sample_airbnb wählen wir alle Entitäten aus und klicken auf Load.
Fast geschafft. In der Report-Sicht klappen wir rechts innerhalb von Fields die Entität listingsAndReviews_reviews auf. Markieren die Felder reviews._id und reviews.reviewer_name. Wenn alles funktioniert hat, dann solltest die Ansicht wie folgt aussehen:
Done!