Freigeben über


Verwalten eines Seehauses mit der REST-API

In diesem Artikel werden allgemeine Szenarien für die programmgesteuerte Verwaltung eines Lakehouses mit der Microsoft Fabric-REST-API erläutert. Jeder Abschnitt zeigt die HTTP-Anforderung und -Antwort für eine bestimmte Aufgabe an, damit Sie das Muster an Ihre Automatisierungsskripts oder Anwendungen anpassen können.

Die vollständige Spezifikation – einschließlich aller Parameter, erforderlichen Berechtigungen, Anforderungsschemas und Fehlercodes – finden Sie in der Lakehouse REST-API-Referenz.

Voraussetzungen

Erstellen, Aktualisieren und Löschen eines Seehauses

Die folgenden Beispiele zeigen, wie Sie ein neues Lakehouse bereitstellen, umbenennen, seine Eigenschaften abrufen (einschließlich des automatisch bereitgestellten SQL-Analyseendpunkts) und löschen. Die vollständige Parameterliste und zusätzliche Beispiele (z. B. das Erstellen eines schemafähigen Lakehouse oder erstellen mit einer Definition) finden Sie in der Lakehouse Items-API-Referenz.

Erstellen eines Lakehouse

Um ein Seehaus in einem Arbeitsbereich zu erstellen, senden Sie eine POST-Anforderung mit dem Anzeigenamen. Fabric stellt automatisch einen SQL-Analyseendpunkt neben dem Lakehouse bereit.

Anforderung

POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses
{ 
    "displayName": "demo"
} 

Antwort

{
    "id": "56c6dedf-2640-43cb-a412-84faad8ad648", 
    "type": "Lakehouse", 
    "displayName": "demo", 
    "description": "", 
    "workspaceId": "fc67689a-442e-4d14-b3f8-085076f2f92f" 
} 

Aktualisieren eines Lakehouse

Um ein Seehaus umzubenennen oder seine Beschreibung zu aktualisieren, senden Sie eine PATCH-Anforderung mit den neuen Werten.

Anforderung

PATCH https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}
{ 
    "displayName": "newname", 
    "description": "Item's New description" 
} 

Antwort

{ 
    "id": "56c6dedf-2640-43cb-a412-84faad8ad648", 
    "type": "Lakehouse", 
    "displayName": "newname", 
    "description": "Item's New description", 
    "workspaceId": "fc67689a-442e-4d14-b3f8-085076f2f92f" 
} 

Abrufen von Lakehouse-Eigenschaften

Rufen Sie die Lakehouse-Metadaten ab, einschließlich der OneLake-Pfade und der SQL Analytics-Endpunktverbindungszeichenfolge.

Anforderung

GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId} 

Antwort

{ 
    "id": "daaa77c7-9ef4-41fc-ad3c-f192604424f5", 
    "type": "Lakehouse", 
    "displayName": "demo", 
    "description": "", 
    "workspaceId": "bee6c118-c2aa-4900-9311-51546433bbb8", 
    "properties": { 
        "oneLakeTablesPath": "https://onelake.dfs.fabric.microsoft.com/{workspaceId}/{lakehouseId}/Tables", 
        "oneLakeFilesPath": "https://onelake.dfs.fabric.microsoft.com/{workspaceId}/{lakehouseId}/Files", 
        "sqlEndpointProperties": { 
            "connectionString": "A1bC2dE3fH4iJ5kL6mN7oP8qR9-C2dE3fH4iJ5kL6mN7oP8qR9sT0uV-datawarehouse.pbidedicated.windows.net", 
            "id": "0dfbd45a-2c4b-4f91-920a-0bb367826479", 
            "provisioningStatus": "Success" 
        } 
    } 
}

Lakehouse löschen

Durch das Löschen eines Seehauses werden die Metadaten und Daten entfernt. Verknüpfungen werden entfernt, aber die Daten am Verknüpfungsziel bleiben erhalten.

Anforderung

DELETE https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}

Antwort

Der Antwortkörper ist leer.

Listen Sie die Tabellen in einem Lakehouse auf

Um alle Delta-Tabellen in einem Lakehouse abzurufen – zum Beispiel, um einen Datenkatalog zu erstellen oder eine Bereitstellung zu validieren – verwenden Sie den Endpunkt "List Tables". Die vollständige Parameterliste finden Sie in der Tabellen-API-Referenz.

Anforderung

GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables 

Antwort

{ 
    "continuationToken": null, 
    "continuationUri": null, 
    "data": [ 
        { 
            "type": "Managed", 
            "name": "demo1", 
            "location": "abfss://c522396d-7ac8-435d-8d77-442c3ff21295@onelake.dfs.fabric.microsoft.com/{workspaceId}/Tables/demo1", 
            "format": "delta" 
        } 
    ] 
} 

Die Listentabellen-API unterstützt die Paginierung. Übergeben Sie maxResults als Abfrageparameter, um die Seitengröße zu steuern. Die Antwort enthält einen continuationUri-Aufruf, mit dem Sie die nächste Seite abrufen können.

Durch eine große Tabellenübersicht blättern

Anforderung

GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables?maxResults=1 

Antwort

{ 
    "continuationToken": "+RID:~HTsuAOseYicH-GcAAAAAAA==#RT:1#TRC:1#ISV:2#IEO:65567#QCF:8#FPC:AgKfAZ8BnwEEAAe8eoA=", 
    "continuationUri": "https://api.fabric.microsoft.com:443/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables?continuationToken=%2BRID%3A~HTsuAOseYicH-GcAAAAAAA%3D%3D%23RT%3A1%23TRC%3A1%23ISV%3A2%23IEO%3A65567%23QCF%3A8%23FPC%3AAgKfAZ8BnwEEAAe8eoA%3D", 
    "data": [ 
        { 
            "type": "Managed", 
            "name": "nyctaxismall", 
            "location": "abfss://bee6c118-c2aa-4900-9311-51546433bbb8@onelake.dfs.fabric.microsoft.com/daaa77c7-9ef4-41fc-ad3c-f192604424f5/Tables/nyctaxismall", 
            "format": "delta" 
        } 
    ] 
}

Laden einer Datei in eine Delta-Tabelle

Um CSV- oder Parkettdateien in Delta-Tabellen zu konvertieren, ohne Spark-Code zu schreiben, verwenden Sie die Load Table-API. Dies ist das programmatische Äquivalent der Funktion Load to Tables auf der Lakehouse-Startseite. Die vollständige Parameterliste finden Sie in der Load Table API-Referenz.

Der Vorgang ist asynchron. Folgen Sie diesen Schritten:

  1. Laden Sie Dateien mithilfe von OneLake-APIs in den Abschnitt " Lakehouse Files " hoch.
  2. Übermitteln Sie die Ladeanforderung.
  3. Den Vorgangsstatus abfragen, bis der Vorgang abgeschlossen ist.

In den folgenden Beispielen wird davon ausgegangen, dass die Dateien bereits hochgeladen wurden.

Senden Sie die Ladeanforderung

In diesem Beispiel wird eine CSV-Datei namens demo.csv in eine Tabelle mit dem Namen demo geladen, wobei vorhandene Daten überschrieben werden. Setze mode auf Append, um stattdessen Zeilen hinzuzufügen. Setzen Sie pathType auf Folder, um alle Dateien in einem Ordner zu laden.

Anforderung

POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/tables/demo/load 
{ 
    "relativePath": "Files/demo.csv", 
    "pathType": "File", 
    "mode": "Overwrite", 
    "formatOptions": 
    { 
        "header": true, 
        "delimiter": ",", 
        "format": "Csv" 
    } 
}

Die Antwort enthält keinen Textkörper. Stattdessen enthält der Location Header einen URI, den Sie zum Abrufen des Vorgangsstatus verwenden. Der URI folgt diesem Muster:

https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/operations/{operationId}

Abrufen des Ladevorgangsstatus

Verwenden Sie die operationId aus der Location-Header, um den Fortschritt zu überprüfen:

Anforderung

GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/operations/{operationId}

Antwort

{ 
    "Status": 3, 
    "CreatedTimeUtc": "", 
    "LastUpdatedTimeUtc": "", 
    "PercentComplete": 100, 
    "Error": null 
} 

Möglicher Vorgangsstatus für das Laden in Tabellen:

  • 1: Vorgang nicht gestartet
  • 2 - Wird ausgeführt
  • 3: Erfolg
  • 4: Fehler

Ausführen der Tabellenwartung für eine Delta-Tabelle

Verwenden Sie zum Optimieren von Delta-Tabellen – Anwenden von Bin-Compaction, V-Order, Z-Order oder VACUUM – die Tabellenwartungs-API ohne Nutzung des Lakehouse Explorer. Dies ist die programmatische Entsprechung der Tabellenwartungsfunktion. Die vollständige Parameterliste finden Sie in der Referenz zur Tabellenwartungs-API.

Der Vorgang ist asynchron. Folgen Sie diesen Schritten:

  1. Übermitteln Sie die Tabellenwartungsanforderung.
  2. Den Vorgangsstatus abfragen, bis der Vorgang abgeschlossen ist.

Übermitteln der Tabellenwartungsanforderung

In diesem Beispiel werden die V-Order-Optimierung und Z-Order auf die tipAmount Spalte angewendet und VAKUUM mit einem Aufbewahrungszeitraum von sieben Tagen und einer zusätzlich einstündigen Aufbewahrung ausgeführt.

Anforderung

POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/jobs/TableMaintenance/instances
{
    "executionData": {
        "tableName": "{table_name}",
        "schemaName": "{schema_name}",
        "optimizeSettings": {
            "vOrder": true,
            "zOrderBy": [
                "tipAmount"
            ]
        },
        "vacuumSettings": {
            "retentionPeriod": "7:01:00:00"
        }
    }
}

Die Antwort enthält keinen Textkörper. Der Location Header enthält einen URI, den Sie zum Abrufen des Vorgangsstatus verwenden:

https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}/jobs/instances/{operationId}

Der Ausführungsendpunkt ist im Lakehouse-Umfang, aber die Auftragsinstanzabfragung verwendet absichtlich den generischen Elementauftragsendpunkt (/items/{itemId}/jobs/instances/{jobInstanceId}).

Von Bedeutung

Das Festlegen eines Aufbewahrungszeitraums, der kürzer als sieben Tage ist, beeinflusst Delta-Zeitreisen und kann zu Lesefehlern oder Tabellenbeschädigungen führen, wenn Momentaufnahmen oder nicht festgeschriebene Dateien weiterhin verwendet werden. Aus diesem Grund lehnt die Tabellenwartung sowohl in der Fabric-UI als auch in REST-APIs Aufbewahrungszeiträume unter sieben Tagen standardmäßig ab. Um ein kürzeres Intervall zu erlauben, setzen Sie spark.databricks.delta.retentionDurationCheck.enabled auf false in den Arbeitsbereichseinstellungen; Tabellenwartungsaufträge verwenden dann diese Konfiguration während der Ausführung.

Abfrage des Wartungsstatus der Tabelle

Verwenden Sie den operationId Header aus der Location Kopfzeile, um den Auftragsstatus zu überprüfen:

Anforderung

GET https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}/jobs/instances/{operationId}

Diese Abrufroute verwendet items absichtlich statt lakehouses.

Antwort

{
    "id": "{operationId}",
    "itemId": "431e8d7b-4a95-4c02-8ccd-6faef5ba1bd7",
    "jobType": "TableMaintenance",
    "invokeType": "Manual",
    "status": "Completed",
    "rootActivityId": "8c2ee553-53a4-7edb-1042-0d8189a9e0ca",
    "startTimeUtc": "2023-04-22T06:35:00.7812154",
    "endTimeUtc": "2023-04-22T06:35:00.8033333",
    "failureReason": null
}

Möglicher Vorgangsstatus für Tabellenwartung:

  • NotStarted - Job nicht gestartet
  • InProgress: Auftrag ist in Bearbeitung
  • Completed: Auftrag abgeschlossen
  • Job fehlgeschlagen
  • Abgebrochen - Auftrag abgebrochen
  • Deduped: Eine Instanz desselben Auftragstyps wird bereits ausgeführt, und diese Auftragsinstanz wird übersprungen.