Usare gli endpoint RESTful per importare dati nel database SQL di Azure

Completato

Il database SQL di Azure ti consente di importare i dati utilizzando un endpoint REST esterno attraverso la stored procedure di sistema sp_invoke_external_rest_endpoint. È possibile chiamare qualsiasi endpoint REST HTTP direttamente dalle query SQL consentendo l'integrazione con un'ampia gamma di servizi, tra cui Funzioni di Azure, App per la logica di Azure e Servizio app di Azure.

Inoltre, se si vuole richiamare un servizio REST non incluso nell'elenco consentito, è possibile usare Gestione API di Azure per esporre in modo sicuro il servizio desiderato e renderlo disponibile per sp_invoke_external_rest_endpoint.

Esplorare l'utilizzo dell'API

Di seguito sono elencati alcuni dei principali casi d'uso e scenari in cui questa funzionalità può essere utile.

  • Elaborazione dei dati con Funzioni di Azure: è possibile usare sp_invoke_external_rest_endpoint per chiamare una funzione di Azure che elabora i dati. Ad esempio, è possibile inviare un batch di dati a una funzione di Azure per trasformazioni o calcoli complessi e quindi archiviare nuovamente i risultati nel database.

  • Integrazione con Servizi cognitivi: è possibile chiamare le API Servizi cognitivi per eseguire attività come l'analisi del sentiment, il riconoscimento delle immagini o la traduzione della lingua. Ad esempio, è possibile inviare dati di testo all'API Analisi del testo per analizzare il feedback dei clienti e archiviare i punteggi del sentiment nel database.

  • Flussi di lavoro guidati dagli eventi: usare sp_invoke_external_rest_endpoint per attivare flussi di lavoro in App per la logica o Power Automate. Questo può essere utile per automatizzare i processi aziendali, ad esempio l'invio di notifiche o l'aggiornamento di record in altri sistemi in base alle modifiche nel database.

  • Arricchimento dei dati: arricchire i dati chiamando API esterne. Ad esempio, è possibile chiamare un'API REST per ottenere informazioni aggiuntive su un prodotto o un cliente e quindi archiviare i dati nel database.

  • Gestione API: usare sp_invoke_external_rest_endpoint per interagire con le API gestite da Gestione API di Azure. In questo modo è possibile usare le API esistenti per varie funzionalità senza dover scrivere un codice di integrazione complesso.

Implementare chiamate API sicure

Gli endpoint REST richiedono spesso l'autenticazione, che può essere eseguita tramite coppie chiave-valore nella stringa di query o nelle intestazioni HTTP. È possibile archiviare in modo sicuro questi dati tramite DATABASE SCOPED CREDENTIALS con il parametro IDENTITY specificando come passare i dati di autenticazione. Il parametro IDENTITY supporta quattro opzioni: HTTPEndpointHeaders, HTTPEndpointQueryString, Managed Identity e Shared Access Signature (SAS).

L'oggetto DATABASE SCOPED CREDENTIAL creato può essere usato tramite il parametro @credential nella stored procedure sp_invoke_external_rest_endpoint. Le informazioni di autenticazione devono essere fornite tramite il parametro SECRET in formato JSON flat.

CREATE DATABASE SCOPED CREDENTIAL [https://.azurewebsites.net/api/]
WITH IDENTITY = 'HTTPEndpointHeaders', SECRET = '{"x-functions-key":"<your-function-key>"}';

Richiamare l'endpoint REST

Si supponga di voler importare dati da un'API REST che fornisce informazioni meteo. Nel database SQL di Azure è già disponibile una tabella WeatherData con le colonne City, Temperature, Condition e Timestamp.

Usare la stored procedure sp_invoke_external_rest_endpoint per chiamare l'API REST e inserire i dati nella tabella:

DECLARE @response NVARCHAR(MAX);
EXEC sp_invoke_external_rest_endpoint 
    @method = 'GET',
    @url = 'https://api.weather.com/v3/wx/conditions/current?apiKey=your_api_key&format=json',
    @response = @response OUTPUT;

INSERT INTO WeatherData (City, Temperature, Condition, Timestamp)
SELECT 
    JSON_VALUE(@response, '$.location.city'),
    JSON_VALUE(@response, '$.temperature'),
    JSON_VALUE(@response, '$.weatherCondition'),
    GETDATE();

Quando si valuta l'uso degli endpoint REST, assicurarsi che gli endpoint che vengono chiamati siano sicuri e che i dati sensibili vengano gestiti in modo appropriato. Si tenga presente che le chiamate API frequenti influiscono sulle prestazioni, in particolare quando si gestiscono set di dati di grandi dimensioni o aggiornamenti molto frequenti. Implementare anche la gestione degli errori per gestire i potenziali problemi relativi alle chiamate API, ad esempio timeout o risposte non valide.