Condividi tramite


Esercitazione: Caricare dati esterni usando un'identità gestita

Questo articolo illustra come creare tabelle esterne o inserire dati da account Azure Data Lake Storage (ADLS) Gen2 usando un'identità gestita.

Prerequisiti

Per completare questa esercitazione sono necessarie le risorse seguenti:

  • Un account Azure Data Lake Storage (ADLS) Gen2
  • Un'area di lavoro di Azure Synapse Analytics e un pool SQL dedicato

Concedere all'identità dell'area di lavoro l'accesso all'account di archiviazione

Ogni area di lavoro di Azure Synapse Analytics crea automaticamente un'identità gestita che consente di configurare l'accesso sicuro ai dati esterni dall'area di lavoro. Per altre informazioni sulle identità gestite per Azure Synapse Analytics, vedere Identità del servizio gestita per Azure Synapse Analytics.

Per abilitare l'identità gestita per accedere ai dati negli account ADLS Gen2, è necessario concedere all'identità l'accesso all'account di origine. Per concedere le autorizzazioni appropriate, seguire questa procedura:

  1. Nel portale di Azure trovare l'account di archiviazione.
  2. Selezionare Archiviazione dati -> Contenitori e passare alla cartella in cui si trovano i dati di origine a cui deve accedere la tabella esterna.
  3. Seleziona Controllo di accesso (IAM).
  4. Selezionare Aggiungi -> Aggiungi assegnazione di ruolo.
  5. Nell'elenco dei ruoli della funzione del processo selezionare Collaboratore dati BLOB di archiviazione e selezionare Avanti.
  6. Nella pagina Aggiungi assegnazione di ruolo selezionare + Seleziona membri. Verrà visualizzato il riquadro Seleziona membri .
  7. Digitare il nome dell'identità dell'area di lavoro. L'identità dell'area di lavoro corrisponde al nome dell'area di lavoro. Quando viene visualizzato, selezionare l'identità dell'area di lavoro e quindi Selezionare.
  8. Nella pagina Aggiungi assegnazione di ruolo verificare che l'elenco dei membri includa l'account MICROSOFT Entra ID desiderato. Dopo la verifica, selezionare Rivedi e assegna.
  9. Nella pagina di conferma esaminare le modifiche e selezionare Rivedi e assegna.

L'identità dell'area di lavoro è ora membro del ruolo Collaboratore dati BLOB di archiviazione e ha accesso alla cartella di origine.

Nota

Questi passaggi si applicano anche agli account ADLS Gen2 sicuri configurati per limitare l'accesso pubblico. Per altre informazioni sulla protezione dell'account ADLS Gen2, vedere Configurare Archiviazione di Azure firewall e reti virtuali.

Inserire dati con COPY INTO

L'istruzione T-SQL COPY INTO fornisce un inserimento dati flessibile e ad alta velocità effettiva nelle tabelle ed è la strategia principale per inserire i dati nelle tabelle del pool SQL dedicato. COPY INTO consente agli utenti di inserire dati da posizioni esterne senza dover creare gli oggetti di database aggiuntivi necessari per le tabelle esterne.

Per eseguire l'istruzione usando un'identità gestita dell'area COPY INTO di lavoro per l'autenticazione, usare il comando T-SQL seguente:

COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
    CREDENTIAL = (IDENTITY = 'Managed Identity'),
    [<CopyIntoOptions>]
);

Dove:

  • <TableName> è il nome della tabella in cui inserire i dati
  • <AccountName> è il nome dell'account DILS Gen2
  • <Container> è il nome del contenitore all'interno dell'account di archiviazione in cui sono archiviati i dati di origine
  • <Folder> è la cartella (o il percorso con sottocartelle) in cui i dati di origine vengono archiviati all'interno del contenitore. È anche possibile specificare un nome file se punta direttamente a un singolo file.
  • <CopyIntoOptions> è l'elenco di tutte le altre opzioni che si desidera fornire all'istruzione COPY INTO.

Per altre informazioni ed esplorare la sintassi completa di COPY INTO, vedere COPY INTO (Transact-SQL).

Eseguire query sui dati in ADLS Gen2 usando tabelle esterne

Le tabelle esterne consentono agli utenti di eseguire query sui dati dagli account Azure Data Lake Storage (ADLS) Gen2 senza dover prima inserire dati. Gli utenti possono creare una tabella esterna che punta ai file in un contenitore ADLS Gen2 ed eseguirne una query esattamente come una normale tabella utente.

I passaggi seguenti descrivono il processo per creare una nuova tabella esterna che punta ai dati in ADLS Gen2, usando un'identità gestita per l'autenticazione.

Creare gli oggetti di database necessari

Per le tabelle esterne è necessario creare gli oggetti seguenti:

  1. Chiave master del database che crittografa il segreto delle credenziali con ambito database
  2. Credenziali con ambito database che usano l'identità dell'area di lavoro
  3. Origine dati esterna che punta alla cartella di origine
  4. Formato di file esterno che definisce il formato dei file di origine
  5. Definizione di tabella esterna usata per le query

Per seguire questa procedura, usare l'editor SQL nell'area di lavoro di Azure Synapse o il client SQL preferito connesso al pool SQL dedicato. Esaminiamo in dettaglio questi passaggi.

Creare la chiave master del database

La chiave master del database è una chiave simmetrica usata per proteggere le chiavi private di certificati e chiavi asimmetriche presenti nel database e nei segreti nelle credenziali con ambito database. Se nel database è già presente una chiave master, non è necessario crearne una nuova. Sostituire <Secure Password> con una password sicura. Questa password viene usata per crittografare la chiave master nel database.

Per creare una chiave master, usare il comando T-SQL seguente:

-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';

Per altre informazioni sulla chiave master del database, vedere CREATE MASTER KEY (Transact-SQL).

Creare le credenziali con ambito database

Una credenziale con ambito database usa l'identità dell'area di lavoro ed è necessaria per accedere alla posizione esterna ogni volta che la tabella esterna richiede l'accesso ai dati di origine.

Per creare le credenziali con ambito database, usare il comando seguente. Sostituire <CredentialName> con il nome che si vuole usare per le credenziali con ambito database.

CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';

Per altre informazioni sulle credenziali con ambito database, vedere CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).

Creare un'origine dati esterna.

Il passaggio successivo consiste nel creare un'origine dati esterna che specifica dove risiedono i dati di origine usati dalla tabella esterna.

Per creare l'origine dati esterna, usare il comando T-SQL seguente:

CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
    TYPE = HADOOP,
    LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/,
    CREDENTIAL = <CredentialName>
);

Dove:

  • <ExternalDataSourceName> è il nome da usare per l'origine dati esterna.
  • <AccountName> è il nome dell'account ADLS Gen2.
  • <Container> è il nome del contenitore all'interno dell'account di archiviazione in cui sono archiviati i dati di origine.
  • <Folder> è la cartella (o il percorso con sottocartelle) in cui i dati di origine vengono archiviati all'interno del contenitore. È anche possibile specificare un nome file se punta direttamente a un singolo file.
  • <Credential> è il nome delle credenziali con ambito database create in precedenza.

Per altre informazioni sulle origini dati esterne, vedere CREATE EXTERNAL DATA SOURCE (Transact-SQL).

Creare il formato di file esterno

Il passaggio successivo consiste nel creare il formato di file esterno. Specifica il layout effettivo dei dati a cui fa riferimento la tabella esterna.

Per creare il formato di file esterno, usare il comando T-SQL seguente. Sostituire <FileFormatName> con il nome da usare per il formato di file esterno.

CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
    FORMAT_TYPE = DELIMITEDTEXT,
    FORMAT_OPTIONS (
        FIELD_TERMINATOR = ',',
        STRING_DELIMITER = '"',
        FIRST_ROW = 2,
        USE_TYPE_DEFAULT = True
    )
);

In questo esempio, modificare i parametri, ad FIELD_TERMINATOResempio , STRING_DELIMITER, FIRST_ROWe altri in base alle esigenze in base ai dati di origine. Per altre opzioni di formattazione e per altre informazioni su EXTERNAL FILE FORMAT, vedere CREATE EXTERNAL FILE FORMAT.

Creare la tabella esterna

Ora che vengono creati tutti gli oggetti necessari che contengono i metadati per accedere in modo sicuro ai dati esterni, è possibile creare la tabella esterna. Per creare la tabella esterna, usare il comando T-SQL seguente:

-- Adjust the table name and columns to your desired name and external table schema
CREATE EXTERNAL TABLE <ExternalTableName> (
    Col1 INT,
    Col2 NVARCHAR(100),
    Col4 INT
)
WITH
(
    LOCATION = '<Path>',
    DATA_SOURCE = <ExternalDataSourceName>,
    FILE_FORMAT = <FileFormatName>
);

Dove:

Assicurarsi di modificare il nome e lo schema della tabella in base al nome desiderato e allo schema dei dati nei file di origine.

A questo punto, vengono creati tutti i metadati necessari per accedere alla tabella esterna. Per testare la tabella esterna, usare una query come l'esempio T-SQL seguente per convalidare il lavoro:

SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;

Se tutti gli elementi sono stati configurati correttamente, verranno visualizzati i dati dei dati di origine in seguito a questa query.

Per altre informazioni ed esplorare la sintassi completa di CREATE EXTERNAL TABLE, vedere CREATE EXTERNAL TABLE (Transact-SQL).