Teilen über


Fabric API für GraphQL-Editor

Die Fabric-API für GraphQL bietet eine grafische GraphQL-Entwicklungsumgebung, die es einem interaktiven Playground ermöglicht, die Liveergebnisse Ihrer GraphQL-Abfragen und -Mutationen zu verfassen, zu testen und anzuzeigen.

Wer den GraphQL-Editor verwendet

Der GraphQL-Editor ist für Folgendes unerlässlich:

  • Anwendungsentwickler, die Prototypen erstellen und Abfragen mit Fabric-Daten testen, bevor sie in Anwendungen implementiert werden
  • Dateningenieure untersuchen Lakehouse- und Warehouse-Datenstrukturen und validieren GraphQL-Schemadesigns
  • Mitwirkende am Fabric-Arbeitsbereich testen die Zugriffsberechtigungen auf Daten und beheben Probleme mit Abfragen.
  • BI-Entwickler lernen die API-Struktur und erstellen Datenzugriffsmuster für benutzerdefinierte Anwendungen
  • Entwicklungsteams , die an der Abfrageentwicklung zusammenarbeiten und Datenzugriffsprobleme innerhalb von Fabric-Arbeitsbereichen beheben

Verwenden Sie den Editor, wenn Sie GraphQL-Abfragen interaktiv entwickeln, testen oder debuggen müssen, um gegen Ihre Fabric-Datenquellen vorzugehen.

Erste Schritte mit dem GraphQL-Editor

Führen Sie die folgenden Schritte aus, um mit der Verwendung des GraphQL-Editors zu beginnen:

  1. Öffnen Sie das GraphQL-API-Element – Navigieren Sie zu Ihrem Arbeitsbereich in Fabric, und öffnen Sie die API für das GraphQL-Element.

  2. Greifen Sie auf den Editor zu – Wählen Sie "Abfrage" in der unteren linken Ecke des Portalbildschirms aus.

    Screenshot, der zeigt, wo die Abfrageoption in der unteren linken Ecke des Fabric-Bildschirms angezeigt wird.

  3. Schreiben Sie Ihre Abfrage – Geben Sie Ihre GraphQL-Abfragen direkt auf der Registerkarte "Abfrage " ein. Verwenden Sie IntelliSense mit Tastenkombinationen:

    • Windows: STRG+LEERTASTE
    • macOS: cmd + Leertaste

    Screenshot des API-Editor-Bildschirms, auf dem eine Registerkarte

  4. Führen Sie die Abfrage aus: Wählen Sie "Ausführen" aus, um die Abfrage auszuführen und Daten aus Der Datenquelle abzurufen.

Generieren von Code

Der API-Editor generiert automatisch Textbausteine aus Python- oder Node.js-Code, die die GraphQL-Abfrage oder -Mutation widerspiegeln, die Sie derzeit im Editor testen. Während Sie Ihre Abfragen prototypisieren und verfeinern, wird der generierte Code entsprechend aktualisiert. Sobald Sie mit den Ergebnissen zufrieden sind, können Sie den generierten Code anzeigen und kopieren, um ihn zu Testzwecken lokal auszuführen oder ihn in Ihrem Anwendungsentwicklungsprozess wiederzuverwenden.

Wichtig

Der generierte Code verwendet interaktive Browseranmeldeinformationen und sollte nur zu Testzwecken verwendet werden. Registrieren Sie in der Produktion immer eine Anwendung in Microsoft Entra, und verwenden Sie die entsprechende client_id und Bereiche. Du findest ein End-to-End-Beispiel mit Beispielcode unter Connect Applications.

Erste Schritte:

  1. Schreiben Sie eine Abfrage : Geben Sie die folgende Beispielabfrage (oder Ihre eigene) im Abfrage-Editor ein:

    query {
      addresses(first: 5) {
         items {
            AddressID
            City
            StateProvince
            CountryRegion
         }  
      }
    }
    
  2. Führen Sie die Abfrage aus: Wählen Sie "Ausführen" aus, um die Abfrage auszuführen, und überprüfen Sie, ob sie im Editor ordnungsgemäß funktioniert, bevor Sie fortfahren.

  3. Code generieren – Wählen Sie die Schaltfläche " Code generieren " und dann Ihre bevorzugte Programmiersprache (Python oder JavaScript/Node.JS) aus:

    Screenshot des API-Editor-Bildschirms mit der Dropdownliste zum Auswählen der Programmiersprache für generierten Code.

  4. Anschließend können Sie den generierten Code kopieren und als Datei in einem lokalen Ordner speichern. Führen Sie je nach ausgewählter Sprache die folgenden schnellen Schritte aus, um lokal zu testen:

Python

  1. Erstellen Sie eine Datei mit dem Namen editor.py , und fügen Sie den generierten Code aus der obigen Beispielabfrage ein.

  2. Erstellen Sie eine virtuelle Umgebung, indem Sie den Befehl python -m venv .venvausführen.

  3. Aktivieren Sie venv, indem Sie .venv\Scripts\activate oder source .venv/bin/activate ausführen.

  4. Installieren Sie die erforderliche Abhängigkeit, indem Sie pip install azure-identity ausführen.

  5. Führen Sie den Code mit python editor.py aus.

  6. Sie werden aufgefordert, sich über ein Browserfenster anzumelden, um die Anforderung zu authentifizieren.

  7. Die Antwort der API wird in der Konsole gedruckt.

    {
    	"data": {
    		"addresses": {
    			"items": [
    				{
    					"AddressID": 9,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 11,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 25,
    					"City": "Dallas",
    					"StateProvince": "Texas",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 28,
    					"City": "Phoenix",
    					"StateProvince": "Arizona",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 32,
    					"City": "Montreal",
    					"StateProvince": "Quebec",
    					"CountryRegion": "Canada"
    				}
    			]
    		}
    	}
    }
    

Node.JS

  1. Erstellen Sie eine Datei mit dem Namen editor.js , und fügen Sie den generierten Code aus der obigen Beispielabfrage ein.

  2. Erstellen Sie in editor.js demselben Ordner wie package.jsoneine Datei mit dem folgenden Inhalt:

    {
      "type": "module",
      "dependencies": {}
    }
    
  3. Installieren Sie Node.js auf Ihrem Entwicklungscomputer (einschließlich npm)

  4. Führen Sie npm install @azure/identity oder einen ähnlichen Befehl in Ihrem ausgewählten Paketmanager aus, um die neueste Version der Identitätsbibliothek zu installieren.

  5. Führen Sie node editor.js aus, um den Code auszuführen.

  6. Sie werden aufgefordert, sich über ein Browserfenster anzumelden, um die Anforderung zu authentifizieren.

  7. Die Antwort der API wird in der Konsole gedruckt.

    {
    	"data": {
    		"addresses": {
    			"items": [
    				{
    					"AddressID": 9,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 11,
    					"City": "Bothell",
    					"StateProvince": "Washington",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 25,
    					"City": "Dallas",
    					"StateProvince": "Texas",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 28,
    					"City": "Phoenix",
    					"StateProvince": "Arizona",
    					"CountryRegion": "United States"
    				},
    				{
    					"AddressID": 32,
    					"City": "Montreal",
    					"StateProvince": "Quebec",
    					"CountryRegion": "Canada"
    				}
    			]
    		}
    	}
    }
    

Entwicklung von Abfragen und Mutationen

Die folgenden Beispiele veranschaulichen die GraphQL-Abfrage- und Mutationssyntax mithilfe der AdventureWorks-Beispieldaten. In diesen Beispielen wird davon ausgegangen, dass Sie mit einem Fabric Data Warehouse arbeiten, das Schreibvorgänge (Mutationen) unterstützt. Auf Datenquellen, auf die über SQL Analytics-Endpunkte (wie Lakehouses und gespiegelte Datenbanken) zugegriffen wird, kann nur lesend zugegriffen werden; sie unterstützen nur Abfragen, keine Änderungen.

Lesen Sie diesen kurzen GraphQL-Schemaauszug aus AdventureWorks. Er definiert einen Product Typ mit Abfragen, um ein einzelnes Produkt zu lesen oder alle Produkte auflisten und Mutationen zum Erstellen, Aktualisieren oder Löschen von Produkten, die alle CRUDL-Anwendungsfälle unterstützen (Erstellen, Lesen, Aktualisieren, Löschen, Listen).

{
  type Product {
    ProductID: Int!
    Name: String!
    ProductNumber: String!
    Color: String
    ListPrice: Float!
    SellStartDate: DateTime!
  }

  type Query {
    products(first: Int, filter: ProductFilterInput): ProductConnection
    products_by_pk(ProductID: Int!): Product
  }

  type Mutation {
    createProduct(Name: String!, ProductNumber: String!, ListPrice: Float!, SellStartDate: DateTime!): Product
    updateProduct(ProductID: Int!, Name: String, Color: String, ListPrice: Float): Product
    deleteProduct(ProductID: Int!): Boolean
  }
}

Lesen Sie die Daten, die über GraphQL verfügbar gemacht werden, mithilfe einer abfrage, die im Schema definiert ist. Die products_by_pk Abfrage ruft ein einzelnes Produkt anhand des Primärschlüssels ab:

query MyQuery {
  products_by_pk(ProductID: 680) {
    ProductID
    Name
    ProductNumber
    Color
    ListPrice
  }
}

Antwort:

{
  "data": {
    "products_by_pk": {
      "ProductID": 680,
      "Name": "HL Road Frame - Black, 58",
      "ProductNumber": "FR-R92B-58",
      "Color": "Black",
      "ListPrice": 1431.50
    }
  }
}

Verwenden Sie Mutationen wie createProduct, um Daten zu schreiben und ein neues Produkt mit den erforderlichen Parametern zu erstellen.

mutation MyMutation {
  createProduct(
    Name: "Mountain Bike Helmet - Blue", 
    ProductNumber: "HE-M897-B", 
    ListPrice: 89.99,
    SellStartDate: "2025-01-01T00:00:00Z"
  ) {
    ProductID
    Name
    ProductNumber
    ListPrice
  }
}

Antwort:

{
  "data": {
    "createProduct": {
      "ProductID": 1001,
      "Name": "Mountain Bike Helmet - Blue",
      "ProductNumber": "HE-M897-B",
      "ListPrice": 89.99
    }
  }
}

Abfragevariablen

Verwenden Sie den Bereich "Abfragevariablen " auf der rechten Seite der Registerkarte " Abfrage ", um Parameter als Variablen an Ihre Abfragen oder Mutationen zu übergeben. Variablen funktionieren wie Variablen in anderen Programmiersprachen. Jede Variable wird mit einem Namen deklariert, der für den Zugriff auf den darin gespeicherten Wert verwendet wird. Im vorherigen Mutationsbeispiel ändern Sie es geringfügig, um Abfragevariablen zu verwenden.

mutation MyMutation ($name: String!, $productNumber: String!, $listPrice: Float!, $sellStartDate: DateTime!){
  createProduct(
    Name: $name, 
    ProductNumber: $productNumber, 
    ListPrice: $listPrice,
    SellStartDate: $sellStartDate
  ) {
    ProductID
    Name
    ProductNumber
    ListPrice
  }
}

Definieren Sie Variablen im Bereich "Abfragevariablen " mithilfe des folgenden Beispiels.

{
  "name": "Mountain Bike Helmet - Blue",
  "productNumber": "HE-M897-B",
  "listPrice": 89.99,
  "sellStartDate": "2025-01-01T00:00:00Z"
}

Variablen machen den Mutationscode übersichtlicher, einfacher zu lesen, zu testen und zu ändern. Sie machen es auch einfach, dieselbe Mutation mit unterschiedlichen Werten wiederzuverwenden, indem sie einfach die Variablen ändern.