Verwenden des Azure Cosmos DB ODBC-Treibers zum Herstellen einer Verbindung mit BI- und Datenanalyse-Tools

GILT FÜR: NoSQL

In diesem Artikel werden Sie durch die Installation und Verwendung des Azure Cosmos DB ODBC-Treibers zum Erstellen von normalisierten Tabellen und Ansichten für Ihre Azure Cosmos DB-Daten geführt. Sie können die normalisierten Daten mit SQL-Abfragen abfragen oder sie in Power BI oder andere BI- und Analyse-Software importieren, um Berichte und Visualisierungen zu erstellen.

Azure Cosmos DB ist eine schemalose Datenbank, die eine schnelle Anwendungsentwicklung ermöglicht und Sie Datenmodelle durchlaufen lässt, ohne dass ein striktes Schema eingehalten werden muss. Eine einzelne Azure Cosmos DB-Datenbank kann JSON-Dokumente mit unterschiedlichen Strukturen enthalten. Wenn Sie diese Daten analysieren oder darüber berichten möchten, müssen Sie sie möglicherweise vereinfachen, damit sie in ein Schema passen.

Der ODBC-Treiber normalisiert Azure Cosmos DB-Daten in Tabellen und Ansichten, die Ihre Anforderungen an Datenanalyse und Berichterstellung erfüllen. Bei den normalisierten Schemas können Sie mithilfe von ODBC-kompatiblen Tools auf die Daten zugreifen. Die Schemas haben keine Auswirkung auf die zugrunde liegenden Daten und müssen von den Entwicklern nicht beachtet werden. Der ODBC-Treiber hilft, Azure Cosmos DB-Datenbanken für Datenanalysten und Entwicklungsteams nützlich zu machen.

Sie können SQL-Vorgänge für die normalisierten Tabellen und Ansichten durchführen, z. B. das Gruppieren nach Abfragen, Einfügungen, Aktualisierungen und Löschungen. Der Treiber ist ODBC 3.8-kompatibel und unterstützt die ANSI SQL-92-Syntax.

Wichtig

Erwägen Sie die Verwendung von Azure Synapse Link für Azure Cosmos DB, um Tabellen und Sichten für Ihre Daten zu erstellen. Synapse Link bietet gegenüber dem ODBC-Treiber deutliche Leistungsvorteile für große Datasets. Sie können auch die normalisierten Azure Cosmos DB-Daten mit anderen Softwarelösungen verbinden, z. B. SQL Server Integration Services (SSIS), QlikSense, Tableau, sowie mit anderen Analysesoftware-, BI- und Datenintegrationstools. Sie können diese Lösungen zum Analysieren, Verschieben, Transformieren und Erstellen von Visualisierungen mit Ihren Azure Cosmos DB-Daten verwenden.

Wichtig

  • Das Herstellen einer Verbindung mit Azure Cosmos DB mit dem ODBC-Treiber wird zurzeit nur für Azure Cosmos DB for NoSQL unterstützt.
  • Der aktuelle ODBC-Treiber unterstützt nicht Aggregatweitergaben, und bei einigen Analysetools gibt es bekannte Probleme. Bis zur Veröffentlichung einer neuen Version können Sie eine der folgenden Alternativen verwenden:

Installieren des ODBC-Treibers und Herstellen einer Verbindung mit Ihrer Datenbank

  1. Laden Sie die Treiber für Ihre Umgebung herunter:

    Installationsprogramm Unterstützte Betriebssysteme
    Microsoft Azure Cosmos DB ODBC 64-bit.msi für 64-Bit-Windows 64-Bit-Versionen von Windows 8.1 oder höher, Windows 8, Windows 7. 64-Bit-Versionen von Windows Server 2012 R2, Windows Server 2012 und Windows Server 2008 R2.
    Microsoft Azure Cosmos DB ODBC 32x64-bit.msi für 32-Bit unter 64-Bit-Windows 64-Bit-Versionen von Windows 8.1 oder höher, Windows 8, Windows 7, Windows XP, Windows Vista. 64-Bit-Versionen von Windows Server 2012 R2, Windows Server 2012, Windows Server 2008 R2 und Windows Server 2003.
    Microsoft Azure Cosmos DB ODBC 32-bit.msi für 32-Bit-Windows 32-Bit-Versionen von Windows 8.1 oder höher, Windows 8, Windows 7, Windows XP und Windows Vista.
  2. Führen Sie die MSI-Datei, mit der der Installations-Assistent für den Microsoft Azure Cosmos DB-ODBC-Treiber gestartet wird, lokal aus.

  3. Schließen Sie den Installations-Assistenten mithilfe der Standardeingabe ab.

  4. Geben Sie nach der Installation des Treibers ODBC-Datenquellen im Suchfeld „Windows“ ein, und öffnen Sie den ODBC-Datenquellenadministrator.

  5. Vergewissern Sie sich, dass der Microsoft Azure DocumentDB-ODBC-Treiber auf der Registerkarte Treiber aufgeführt ist.

    Screenshot des Fensters „ODBC-Datenquellenadministrator“.

  6. Wählen Sie die Registerkarte Benutzer-DSN und dann Hinzufügen aus, um einen neuen Datenquellennamen (Data Source Name, DSN) zu erstellen. Sie können auch einen System-DSN erstellen.

  7. Wählen Sie im Fenster Neue Datenquelle erstellen die Option Microsoft Azure DocumentDB-ODBC-Treiber und dann Fertig stellen aus.

  8. Geben Sie im Fenster DocumentDB ODBC Driver DSN Setup (DocumentDB-ODBC-Treiber – DSN-Setup) die folgenden Informationen ein:

    Screenshot des DNS (Domain Name Server)-Einrichtungsfensters.

    • Datenquellenname Ein Anzeigename für den ODBC-DSN. Dieser Name ist für dieses Azure Cosmos DB-Konto eindeutig.
    • Beschreibung: Eine kurze Beschreibung der Datenquelle.
    • Host: Der URI für Ihr Azure Cosmos DB-Konto. Sie können diese Informationen im Azure-Portal über die Seite Schlüssel in Ihrem Azure Cosmos DB-Konto abrufen.
    • Zugriffsschlüssel: Der Primär- oder Sekundärschlüssel für Lese-/Schreibzugriff oder schreibgeschützten Zugriff über die Seite mit den Schlüsseln für Azure Cosmos DB im Azure-Portal. Es ist am besten, die schreibgeschützten Schlüssel zu verwenden, wenn Sie den DSN für schreibgeschützte Datenverarbeitung und -berichterstellung nutzen.

    Wenn Sie einen Authentifizierungsfehler vermeiden möchten, verwenden Sie die Kopierschaltflächen, um den URI und den Schlüssel aus dem Azure-Portal zu kopieren.

    Screenshot der Seite „Azure Cosmos DB-Schlüssel“.

    • Zugriffsschlüssel verschlüsseln für: Treffen Sie basierend auf den Benutzern dieses Computers die beste Wahl.
  9. Wählen Sie Testen aus, um sich zu vergewissern, dass Sie eine Verbindung mit Ihrem Azure Cosmos DB-Konto herstellen können.

  10. Wählen Sie Erweiterte Optionen aus, und legen Sie die folgenden Werte fest:

    • REST-API-Version: Wählen Sie die REST-API-Version für Ihre Vorgänge aus. Der Standardwert ist 2015-12-16.

      Wenn Sie Container mit großen Partitionsschlüsseln haben, welche die REST-API Version 2018-12-31 benötigen, geben Sie 2018-12-31 ein, und dann führen Sie die Schritte am Ende dieser Prozedur aus.

    • Abfragekonsistenz: Wählen Sie die Konsistenzebene für Ihre Vorgänge aus. Die Standardeinstellung lautet Sitzung.

    • Anzahl von Wiederholungen: Geben Sie ein, wie oft ein Wiederholungsversuch für einen Vorgang durchgeführt werden soll, wenn die erste Anforderung aufgrund einer Ratenbegrenzung des Diensts nicht abgeschlossen werden konnte.

    • Schemadatei: Wenn Sie keine Schemadatei auswählen, überprüft der Treiber bei jeder Sitzung die erste Datenseite für jeden Container, um dessen Schema zu ermitteln. Dies wird als „Containerzuordnung“ bezeichnet. Dieser Prozess kann bei Anwendungen, die den DSN verwenden, zu einer langen Startzeit führen. Am besten ordnen Sie eine Schemadatei dem DSN zu.

      • Wenn Sie bereits eine Schemadatei haben, wählen Sie Durchsuchen aus, navigieren Sie zu der Datei, wählen Sie Speichern und dann OK aus.

      • Wenn Sie noch keine Schemadatei haben, wählen Sie OK aus. Führen Sie dann die Schritte im nächsten Abschnitt zum Erstellen einer Schemadefinition aus. Nachdem Sie das Schema erstellt haben, kehren Sie zu diesem Fenster Erweiterte Optionen zurück, um die Schemadatei hinzuzufügen.

Nachdem Sie OK ausgewählt haben, um das Fenster DocumentDB ODBC Driver DSN Setup fertigzustellen und zu schließen, wird der neue Benutzer-DSN im Fenster ODBC-Datenquellenadministrator auf der Registerkarte Benutzer-DSN angezeigt.

Screenshot mit dem neuen Benutzer-DSN auf der Registerkarte „Benutzer-DSN“.

Bearbeiten der Windows-Registrierung zur Unterstützung der REST-API-Version 2018-12-31

Wenn Sie Container mit großen Partitionsschlüsseln haben, für die die REST-API-Version 2018-12-31 erforderlich ist, führen Sie die folgenden Schritte zum Aktualisieren der Windows Registrierung aus, damit sie diese Version unterstützt.

  1. Geben Sie im Windows-Menü Start die Zeichenfolge regedit ein, um den Registrierungs-Editor zu suchen und zu öffnen.

  2. Navigieren Sie im Registrierungs-Editor zum Pfad Computer\HKEY_LOCAL_MACHINE\SOFTWARE\ODBC\ODBC.INI.

  3. Erstellen Sie einen neuen Unterschlüssel, der denselben Namen wie Ihr DSN hat, z. B. ODBC-DSN für Contoso-Konto.

  4. Navigieren Sie zum neuen Unterschlüssel ODBC-DSN für Contoso-Konto, und klicken Sie mit der rechten Maustaste, um einen neuen Wert des Typs Zeichenfolge hinzuzufügen:

    • Wertname: IgnoreSessionToken

    • Value data: 1

    Screenshot zeigt die Einstellungen des Windows-Registrierungs-Editors.

Erstellen einer Schemadefinition

Es gibt zwei Arten von Methoden zur Stichprobenentnahme, mit denen Sie ein Schema erstellen können: Containerzuordnung oder Tabellentrennzeichenzuordnung. In einer Stichprobenentnahmesitzung können beide Methoden zur Stichprobenentnahme verwendet werden, aber jeder Container kann nur eine dieser Methoden verwenden. Welche Methode verwendet werden soll, ist abhängig von den Merkmalen Ihrer Daten.

  • Containerzuordnung ruft die Daten auf einer Containerseite ab, um die Datenstruktur zu ermitteln, und transponiert dann den Container in eine Tabelle auf der ODBC-Seite. Diese Samplingmethode ist effizient und schnell, wenn die Daten in einem Container homogen sind.

  • Tabellentrennzeichenzuordnung bietet eine robustere Stichprobenentnahme bei heterogenen Daten. Diese Methode legt den Bereich für die Stichprobenentnahme auf eine Gruppe von Attributen und den entsprechenden Werten fest.

    Wenn ein Dokument beispielsweise eine Typ-Eigenschaft enthält, können Sie den Bereich für die Stichprobenentnahme auf die Werte dieser Eigenschaft festlegen. Das Endergebnis der Stichprobenentnahme ist eine Gruppe von Tabellen für jeden der Typ-Werte, die Sie angegeben haben. Typ = Auto erzeugt eine Tabelle vom Typ Auto, während Typ = Flugzeug eine Tabelle vom Typ Flugzeug erzeugt.

Führen Sie zum Definieren eines Schemas die folgenden Schritte aus. Bei der Methode „Tabellentrennzeichenzuordnung“ führen Sie zusätzliche Schritte aus, um Attribute und Werte für das Schema zu definieren.

  1. Wählen Sie im Fenster ODBC-Datenquellenadministrator auf der Registerkarte Benutzer-DSN Ihren Benutzer-DSN-Namen für Azure Cosmos DB und dann Konfigurieren aus.

  2. Wählen Sie im Fenster DocumentDB ODBC Driver DSN Setup die Schaltfläche Schema-Editor aus.

    Screenshot der Schaltfläche Schema-Editor im Fenster „DSN-Setup“.

  3. Wählen Sie im Fenster Schema-Editor die Option Neu erstellen aus.

  4. Im Fenster Generate Schema (Schema generieren) werden alle Sammlungen des Azure Cosmos DB-Kontos angezeigt. Aktivieren Sie die Kontrollkästchen neben den Containern, denen Sie eine Stichprobe entnehmen möchten.

  5. Wenn Sie die Methode Containerzuordnung verwenden möchten, wählen Sie Stichprobe aus.

    Wenn Sie aber die Methode Tabellentrennzeichenzuordnung verwenden möchten, führen Sie die folgenden Schritte aus, um Attribute und Werte zum Festlegen des Bereichs für die Stichprobe zu definieren.

    1. Wählen Sie in der Spalte Zuordnungsdefinition für Ihren DSN die Option Bearbeiten aus.

    2. Wählen Sie im Fenster Zuordnungsdefinition unter Zuordnungsmethode die Option Tabellentrennzeichen aus.

    3. Geben Sie im Feld Attribute den Namen einer Trennzeicheneigenschaft in Ihrem Dokument ein, auf die Sie den Bereich für die Stichprobenentnahme festlegen möchten, z. B. Ort. Drücken Sie die EINGABETASTE.

    4. Wenn Sie den Bereich für die Stichprobenentnahme auf bestimmte Werte für das eingegebene Attribut festlegen möchten, wählen Sie das Attribut aus. Geben Sie dann im Feld Wert einen Wert ein, z. B. Seattle, und drücken Sie die EINGABETASTE. Sie können mehrere Werte für Attribute hinzufügen. Sorgen Sie dabei lediglich dafür, dass bei Ihrer Eingabe der Werte das richtige Attribut ausgewählt ist.

    5. Wenn Sie die Eingabe von Attributen und Werten beendet haben, wählen Sie OK aus.

    6. Wählen Sie im Fenster Schema generieren die Option Stichprobe aus.

  6. Verfeinern Sie auf der Registerkarte Entwurfsansicht Ihr Schema. Die Entwurfsansicht stellt die Datenbank, das Schema und die Tabelle dar. In der Tabellenansicht werden die Eigenschaften angezeigt, die den Spaltennamen zugeordnet sind, z. B. SQL-Name und Quellenname.

    Bei jeder Spalte können Sie je nach Anwendungsfall den Wert für SQL-Name, SQL-Typ, SQL-Länge, Skalierung, Genauigkeit und Nullwerte zulassend ändern.

    Sie können Hide Column (Spalte ausblenden) auf true (wahr) festlegen, wenn Sie diese Spalte aus den Abfrageergebnissen ausschließen möchten. Mit Hide Column = true gekennzeichnete Spalten werden nicht zur Auswahl und Projektion zurückgegeben, obwohl sie weiterhin ein Teil des Schemas sind. Beispielsweise können Sie alle für das Azure Cosmos DB-System erforderlichen Eigenschaften ausblenden, die mit „_“ beginnen. Die Spalte id ist das einzige Feld, das Sie nicht ausblenden können, weil es sich dabei um den Primärschlüssel im normalisierten Schema handelt.

  7. Sobald Sie das Schema definiert haben, wählen Sie Datei>Speichern aus, navigieren Sie zu dem gewünschten Verzeichnis, und wählen Sie Speichern aus.

  8. Wenn Sie dieses Schema zusammen mit einem DSN verwenden möchten, wählen Sie im Fenster DocumentDB ODBC Driver DSN Setup die Option Erweiterte Optionen aus. Wählen Sie das Feld Schemadatei aus, navigieren Sie zum gespeicherten Schema, wählen Sie OK und dann erneut OK aus. Durch Speichern der Schemadatei wird die DSN-Verbindung zum Festlegen des Bereichs auf die schemadefinierten Daten und die Struktur geändert.

Erstellen von Ansichten

Optional können Sie Ansichten im Schema-Editor im Rahmen der Stichprobenentnahme definieren und erstellen. Diese Ansichten entsprechen SQL-Ansichten. Die Ansichten sind schreibgeschützt und auf den Bereich der Auswahl und Projektionen der definierten Azure Cosmos DB-SQL-Abfrage festgelegt.

Führen Sie die folgenden Schritte aus, um eine Ansicht für Ihre Daten zu erstellen:

  1. Wählen Sie im Fenster Schema-Editor auf der Registerkarte Beispielansicht die Container, denen Sie eine Stichprobe entnehmen möchten, und dann in der Spalte Ansichtsdefinition die Option Hinzufügen aus.

    Screenshot des Erstellens einer Ansicht im Treiber.

  2. Wählen Sie im Fenster Definitionen anzeigen die Option Neu aus. Geben Sie einen Namen für die Ansicht ein (z. B. EmployeesfromSeattleView), und wählen Sie OK aus.

  3. Geben Sie im Fenster Ansicht bearbeiten eine Azure Cosmos DB-Abfrage ein, beispielsweise:

    SELECT c.City, c.EmployeeName, c.Level, c.Age, c.Manager FROM c WHERE c.City = "Seattle"

  4. Klicken Sie auf OK.

    Screenshot der Hinzufügung einer Abfrage beim Erstellen einer Ansicht.

Sie können beliebig viele Ansichten erstellen. Nachdem Sie die Ansichten definiert haben, wählen Sie Stichprobe aus, um eine Stichprobe der Daten zu entnehmen.

Wichtig

Der Abfragetext in der Ansichtsdefinition darf keine Zeilenumbrüche enthalten. Andernfalls wird beim Anzeigen der Vorschau ein generischer Fehler angezeigt.

Ausführen einer Beispielabfrage

Nachdem Sie einen Benutzer-DSN für den Azure Cosmos DB-ODBC-Treiber eingerichtet haben, können Sie Azure Cosmos DB aus SQL Server Management Studio (SSMS) abfragen, indem Sie eine verknüpfte Serververbindung einrichten.

  1. Installieren Sie SQL Server Management Studio, und stellen Sie eine Verbindung mit dem Server her.

  2. Erstellen Sie im SSMS-Abfrage-Editor ein Verbindungsserverobjekt für die Datenquelle, indem Sie die folgenden Befehle ausführen. Ersetzen Sie DEMOCOSMOS durch den Namen für Ihren Verbindungsserver und SDS Name durch Ihren Datenquellennamen (DSN).

    USE [master]
    GO
    
    EXEC master.dbo.sp_addlinkedserver @server = N'DEMOCOSMOS', @srvproduct=N'', @provider=N'MSDASQL', @datasrc=N'SDS Name'
    
    EXEC master.dbo.sp_addlinkedsrvlogin @rmtsrvname=N'DEMOCOSMOS', @useself=N'False', @locallogin=NULL, @rmtuser=NULL, @rmtpassword=NULL
    
    GO
    

Aktualisieren Sie die Liste der Verbindungsserver, um den Namen des neuen Verbindungsservers anzuzeigen.

Screenshot eines Verbindungsservers in SSMS.

Geben Sie eine SSMS-Abfrage ein, um die verknüpfte Datenbank abzufragen. In diesem Beispiel wird mit der Abfrage eine Auswahl aus der Tabelle im Container customers getroffen:

SELECT * FROM OPENQUERY(DEMOCOSMOS, 'SELECT *  FROM [customers].[customers]')

Führen Sie die Abfrage aus. Die Ergebnisse sollten ähnlich wie in der folgenden Ausgabe aussehen:

attachments/  1507476156    521 Bassett Avenue, Wikieup, Missouri, 5422   "2602bc56-0000-0000-0000-59da42bc0000"   2015-02-06T05:32:32 +05:00 f1ca3044f17149f3bc61f7b9c78a26df
attachments/  1507476156    167 Nassau Street, Tuskahoma, Illinois, 5998   "2602bd56-0000-0000-0000-59da42bc0000"   2015-06-16T08:54:17 +04:00 f75f949ea8de466a9ef2bdb7ce065ac8
attachments/  1507476156    885 Strong Place, Cassel, Montana, 2069       "2602be56-0000-0000-0000-59da42bc0000"   2015-03-20T07:21:47 +04:00 ef0365fb40c04bb6a3ffc4bc77c905fd
attachments/  1507476156    515 Barwell Terrace, Defiance, Tennessee, 6439     "2602c056-0000-0000-0000-59da42bc0000"   2014-10-16T06:49:04 +04:00      e913fe543490432f871bc42019663518
attachments/  1507476156    570 Ruby Street, Spokane, Idaho, 9025       "2602c156-0000-0000-0000-59da42bc0000"   2014-10-30T05:49:33 +04:00 e53072057d314bc9b36c89a8350048f3

Anzeigen Ihrer Daten in Power BI Desktop

Sie können Ihren DSN nutzen, um mithilfe aller ODBC-kompatiblen Tools eine Verbindung mit Azure Cosmos DB herzustellen. In diesem Verfahren wird gezeigt, wie Sie eine Verbindung mit Power BI Desktop herstellen, um eine Power BI-Visualisierung zu erstellen.

  1. Wählen Sie in Power BI Desktop Daten abrufen aus.

    Screenshot „Daten abrufen“ auf dem Power BI-Desktop.

  2. Wählen Sie im Fenster Daten abrufen nacheinander Andere>ODBC und dann Verbinden aus.

    Screenshot der Auswahl der ODBC-Datenquelle über „Daten abrufen“ in Power BI.

  3. Wählen Sie im Fenster Aus ODBC den von Ihnen erstellten DSN und dann OK aus.

    Screenshot der Auswahl des DSN über „Daten abrufen“ in Power BI.

  4. Wählen Sie im Fenster Mit einem ODBC-Treiber auf eine Datenquelle zugreifen die Option Standard oder Benutzerdefiniert und dann Verbinden aus.

  5. Erweitern Sie im Fenster Navigator im linken Bereich die Datenbank und das Schema, und wählen Sie die Tabelle aus. Der Ergebnisbereich enthält die Daten, die das von Ihnen erstellte Schema verwenden.

    Screenshot der Auswahl der Tabelle über „Daten abrufen“ in Power BI.

  6. Wenn Sie die Daten in Power BI Desktop visualisieren möchten, aktivieren Sie das Kontrollkästchen neben dem Tabellennamen, und wählen Sie dann Laden aus.

  7. Wählen Sie in Power BI Desktop links auf dem Bildschirm die Registerkarte Daten aus, um den Import Ihrer Daten zu bestätigen.

  8. Wählen Sie links auf dem Bildschirm die Registerkarte Bericht aus, anschließend im Menüband die Option Neues visuelles Element, und passen Sie das visuelle Element an.

Problembehandlung

  • Problem: Beim Versuch, eine Verbindung herzustellen, wird Ihnen der folgende Fehler angezeigt:

    [HY000]: [Microsoft][Azure Cosmos DB] (401) HTTP 401 Authentication Error: {"code":"Unauthorized","message":"The input authorization token can't serve the request. Please check that the expected payload is built as per the protocol, and check the key being used. Server used the following payload to sign: 'get\ndbs\n\nfri, 20 jan 2017 03:43:55 gmt\n\n'\r\nActivityId: 9acb3c0d-cb31-4b78-ac0a-413c8d33e373"}
    

    Lösung: Vergewissern Sie sich, dass die Werte für Host und Zugriffsschlüssel, die Sie aus dem Azure-Portal kopiert haben, korrekt sind, und wiederholen Sie Ihren Versuch.

  • Problem: Beim Versuch, einen Azure Cosmos DB-Verbindungsserver zu erstellen, wird Ihnen in SSMS der folgende Fehler angezeigt:

    Msg 7312, Level 16, State 1, Line 44
    
    Invalid use of schema or catalog for OLE DB provider "MSDASQL" for linked server "DEMOCOSMOS". A four-part name was supplied, but the provider does not expose the necessary interfaces to use a catalog or schema.
    

    Lösung: Ein Azure Cosmos DB-Verbindungsserver unterstützt keine vierteilige Benennung.

Nächste Schritte