Condividi tramite


Gestire lakehouse in Microsoft Fabric con l'API REST

L'API REST di Microsoft Fabric fornisce l'endpoint di servizio per il funzionamento CRUD di un elemento di Fabric. Per il lakehouse sono disponibili le azioni seguenti:

Azione Descrizione
Creazione Crea un lakehouse all'interno di un'area di lavoro. Viene eseguito anche il provisioning di un endpoint di Analisi SQL insieme al lakehouse.
Update Aggiorna il nome di un lakehouse e l'endpoint di Analisi SQL.
Elimina Elimina lakehouse e l'endpoint di Analisi SQL associato.
Ottenere le proprietà Ottiene le proprietà di un lakehouse e dell'endpoint di Analisi SQL.
Elencare le tabelle Elencare tabelle nel lakehouse.
Caricamento di tabelle Crea tabelle Delta da file e cartelle CSV e Parquet.
Manutenzione delle tabelle Applicare bin-compaction, V-Order e rimozione di file vecchi o senza riferimento.

Prerequisiti

  • Per usare l'API REST di Fabric, è necessario prima ottenere un token di Microsoft Entra per il servizio Fabric. Usare quindi tale token nell'intestazione di autorizzazione della chiamata API.

  • L'API REST di Microsoft Fabric definisce un endpoint unificato per le operazioni. L'endpoint è https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items. I segnaposto {workspaceId} e {lakehouseId} devono essere sostituiti con i valori appropriati quando si emettono i comandi esemplificati in questo articolo.

Lakehouse CRUD

Usare l'API seguente per eseguire la creazione, le modifiche e la rimozione del lakehouse all'interno di un'area di lavoro.

Creare un lakehouse

Richiesta:

POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items 
{ 
    "displayName": "demo", 
    "type": "Lakehouse" 
} 

Risposta:

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

Aggiornare un lakehouse

Aggiornare la descrizione e rinominare il lakehouse.

Richiesta:

PATCH https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/dc39f96a-47d7-4c2d-9358-740f50c0aa31 
{ 
    "displayName": "newname", 
    "description": "Item's New description" 
} 

Risposta:

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

Ottenere le proprietà del lakehouse

Richiesta:

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

Risposta:

{ 
    "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" 
        } 
    } 
}

Eliminare un lakehouse

Quando si elimina un lakehouse, i dati e i metadati dell'oggetto vengono eliminati. I riferimenti dei collegamenti vengono eliminati, ma i dati vengono mantenuti nella destinazione.

Richiesta:

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

Risposta: Vuoto

Elencare tabelle in un lakehouse

Richiesta:

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

Risposta:

{ 
    "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" 
        } 
    ] 
} 

L'API delle tabelle dell’elenco supporta la paginazione. Specificando maxResults per ogni pagina come parametro per la richiesta, l'API risponde con l'URI di continuazione che può essere usato per ottenere la pagina successiva dei risultati.

Esempio di paginazione

Richiesta:

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

Risposta:

{ 
    "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" 
        } 
    ] 
}

Carica in tabelle

Questa API illustra le capacità della funzionalità Carica in tabelle di Lakehouse. Con questa API, è possibile caricare file CSV e Parquet in tabelle Delta Lake nuove o esistenti nel lakehouse.

Questa API è asincrona, quindi sono necessari tre passaggi:

  1. Caricare file e cartelle nella sezione File di Lakehouse usando le API OneLake.
  2. Inviare la richiesta dell’API Carica in tabelle.
  3. Tenere traccia dello stato dell'operazione fino al completamento.

Le sezioni seguenti presuppongono che i file siano già stati caricati.

Richiesta dell’API Carica in tabelle

Il parametro mode supporta operazioni overwrite e append. Il parametro pathType viene specificato se si caricano singoli file o tutti i file da una cartella specificata. Sia CSV che parquet sono supportati come parametro file format.

In questo esempio viene caricato un file CSV denominato demo.csv in una tabella esistente denominata demo.

Richiesta:

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" 
    } 
}

L'intestazione della risposta contiene l'URI per eseguire il polling dello stato delle operazioni asincrone. L’URI si trova nella variabile Location dell’intestazione della risposta.

La variabile Location contiene un URI come indicato di seguito: https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/lakehouses/{lakehouseId}/operations/32ad6d2a-82bb-420d-bb57-4620c8860373. Il GUID 32ad6d2a-82bb-420d-bb57-4620c8860373 è l'ID operazione per eseguire una query sullo stato dell'esecuzione di operazioni Carica in tabelle, come descritto nella sezione successiva.

Monitoraggio delle operazioni di Carica in tabelle

Dopo aver acquisito operationId dalla risposta della richiesta dell’API Carica in tabelle, eseguire la richiesta seguente:

Richiesta:

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

Risposta:

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

Possibile stato dell'operazione per Carica in tabelle:

  • 1- Operazione non avviata
  • 2 - Esecuzione
  • 3 - Operazione riuscita
  • 4 - Operazione non riuscita

Manutenzione delle tabelle

Questa API illustra le capacità della funzionalità di manutenzione delle tabelle di Lakehouse. Con questa API è possibile applicare bin-compaction, V-Order e pulizia di file precedenti senza riferimenti.

Questa API è asincrona, quindi sono necessari due passaggi:

  1. Inviare una richiesta API di manutenzione tabelle.
  2. Tenere traccia dello stato dell'operazione fino al completamento.

Richiesta dell'API di manutenzione tabelle

In questo esempio viene eseguito un processo di manutenzione tabelle che applica V-Order a una tabella, applicando al tempo stesso Z-Order alla colonna tipAmount ed eseguendo l'operazione VACUUM con una conservazione di sette giorni e un'ora.

Richiesta:

POST https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}/jobs/instances?jobType=TableMaintenance
{
    "executionData": {
        "tableName": "{table_name}",
        "optimizeSettings": {
            "vOrder": "true",
            "zOrderBy": [
                "tipAmount"
            ]
        },
        "vacuumSettings": {
            "retentionPeriod": "7.01:00:00"
        }
    }
}
 

L'intestazione della risposta contiene l'URI per eseguire il polling dello stato delle operazioni asincrone. L’URI si trova nella variabile Location dell’intestazione della risposta.

La variabile Location contiene un URI come indicato di seguito: https://api.fabric.microsoft.com/v1/workspaces/{workspaceId}/items/{lakehouseId}/jobs/instances/f2d65699-dd22-4889-980c-15226deb0e1b. Il GUID f2d65699-dd22-4889-980c-15226deb0e1b è l'ID operazione per eseguire una query sullo stato delle operazioni di manutenzione tabelle, come descritto nella sezione successiva.

Monitoraggio delle operazioni di manutenzione delle tabelle

Dopo aver acquisito operationId dalla risposta della richiesta dell’API Carica in tabelle, eseguire la richiesta seguente:

Richiesta:

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

Risposta:

{
    "parameters": {
        "workspaceId": "{workspaceId}",
        "itemId": "{lakehouseId}",
        "jobInstanceId": "{operationId}"
    },
    "responses": {
        "200": {
            "body": {
                "id": "{operationId}",
                "itemId": "431e8d7b-4a95-4c02-8ccd-6faef5ba1bd7",
                "jobType": "DefaultJob",
                "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
            }
        }
    }
}

Possibile stato dell'operazione per la manutenzione delle tabelle:

  • NotStarted - Processo non avviato
  • InProgress - Processo in corso
  • Completed - Processo completato
  • Failed - Processo non riuscito
  • Canceled - Processo annullato
  • Deduped - Un'istanza dello stesso tipo di processo è già in esecuzione e questa istanza del processo viene ignorata