Zelfstudie: Externe gegevens laden met behulp van een beheerde identiteit
In dit artikel wordt uitgelegd hoe u externe tabellen maakt of gegevens opneemt uit Azure Data Lake Storage-accounts (ADLS) Gen2-accounts met behulp van een beheerde identiteit.
Vereisten
De volgende resources zijn vereist om deze zelfstudie te voltooien:
- Een Azure Data Lake Storage-account (ADLS) Gen2-account
- Een Azure Synapse Analytics-werkruimte en een toegewezen SQL-pool
Geef de werkruimte-id toegang tot het opslagaccount
Elke Azure Synapse Analytics-werkruimte maakt automatisch een beheerde identiteit waarmee u beveiligde toegang tot externe gegevens vanuit uw werkruimte kunt configureren. Ga naar Managed Service Identity voor Azure Synapse Analytics voor meer informatie over beheerde identiteiten voor Azure Synapse Analytics.
Als u uw beheerde identiteit toegang wilt geven tot gegevens in ADLS Gen2-accounts, moet u uw identiteit toegang geven tot het bronaccount. Voer de volgende stappen uit om de juiste machtigingen te verlenen:
- Zoek uw opslagaccount in Azure Portal.
- Selecteer Gegevensopslag -> Containers en navigeer naar de map waar de brongegevens waarnaar de externe tabel toegang nodig heeft.
- Klik op Toegangsbeheer (IAM) .
- Selecteer Toevoegen -> Roltoewijzing toevoegen.
- Selecteer In de lijst met functierollen voor opslagblobgegevens de optie Inzender voor opslagblobgegevens en selecteer Volgende.
- Selecteer + Leden selecteren op de pagina Roltoewijzing toevoegen. Het deelvenster Leden selecteren wordt geopend.
- Typ de naam van uw werkruimte-id. De werkruimte-id is hetzelfde als de naam van uw werkruimte. Wanneer deze wordt weergegeven, kiest u uw werkruimte-id en selecteert u deze.
- Controleer op de pagina Roltoewijzing toevoegen of de lijst met leden uw gewenste Microsoft Entra ID-account bevat. Zodra dit is geverifieerd, selecteert u Beoordelen en toewijzen.
- Controleer de wijzigingen op de bevestigingspagina en selecteer Beoordelen en toewijzen.
Uw werkruimte-id is nu lid van de rol Inzender voor opslagblobgegevens en heeft toegang tot de bronmap.
Notitie
Deze stappen zijn ook van toepassing op beveiligde ADLS Gen2-accounts die zijn geconfigureerd om openbare toegang te beperken. Zie Azure Storage-firewalls en virtuele netwerken configureren voor meer informatie over het beveiligen van uw ADLS Gen2-account.
Gegevens opnemen met COPY INTO
De T-SQL-instructie COPY INTO
biedt flexibele gegevensopname met hoge doorvoer in uw tabellen en is de primaire strategie voor het opnemen van gegevens in uw toegewezen SQL-pooltabellen. COPY INTO
staat gebruikers toe om gegevens van externe locaties op te nemen zonder dat ze een van de extra databaseobjecten hoeven te maken die vereist zijn voor externe tabellen.
Gebruik de volgende T-SQL-opdracht om de COPY INTO
instructie uit te voeren met behulp van een door een werkruimte beheerde identiteit voor verificatie:
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
CREDENTIAL = (IDENTITY = 'Managed Identity'),
[<CopyIntoOptions>]
);
Hierin:
<TableName>
is de naam van de tabel waarin gegevens moeten worden opgenomen<AccountName>
is uw ADLS Gen2-accountnaam<Container>
is de naam van de container in uw opslagaccount waarin de brongegevens worden opgeslagen<Folder>
is de map (of het pad met submappen) waarin de brongegevens in uw container worden opgeslagen. U kunt ook een bestandsnaam opgeven als u rechtstreeks naar één bestand verwijst.<CopyIntoOptions>
is de lijst met andere opties die u wilt opgeven voor de INSTRUCTIE COPY INTO.
Zie COPY INTO (Transact-SQL) voor meer informatie en de volledige syntaxis van COPY INTO.
Query's uitvoeren op gegevens in ADLS Gen2 met behulp van externe tabellen
Met externe tabellen kunnen gebruikers query's uitvoeren op gegevens uit AdLS Gen2-accounts (Azure Data Lake Storage) zonder dat ze eerst gegevens hoeven op te nemen. Gebruikers kunnen een externe tabel maken die verwijst naar bestanden in een ADLS Gen2-container en deze opvragen, net als een gewone gebruikerstabel.
In de volgende stappen wordt het proces beschreven voor het maken van een nieuwe externe tabel die verwijst naar gegevens in ADLS Gen2, met behulp van een beheerde identiteit voor verificatie.
De vereiste databaseobjecten maken
Voor externe tabellen moeten de volgende objecten worden gemaakt:
- Een databasehoofdsleutel waarmee het geheim van de database-scoped referentie wordt versleuteld
- Een databasereferentie die gebruikmaakt van uw werkruimte-id
- Een externe gegevensbron die verwijst naar de bronmap
- Een externe bestandsindeling die de indeling van de bronbestanden definieert
- Een externe tabeldefinitie die wordt gebruikt voor query's
Als u deze stappen wilt volgen, gebruikt u de SQL-editor in de Azure Synapse-werkruimte of de sql-client van uw voorkeur die is verbonden met uw toegewezen SQL-pool. Laten we deze stappen in detail bekijken.
De hoofdsleutel van de database maken
De hoofdsleutel van de database is een symmetrische sleutel die wordt gebruikt voor het beveiligen van de persoonlijke sleutels van certificaten en asymmetrische sleutels die aanwezig zijn in de database en geheimen in referenties met databasebereik. Als de database al een hoofdsleutel bevat, hoeft u geen nieuwe te maken. Vervang <Secure Password>
door een beveiligd wachtwoord. Dit wachtwoord wordt gebruikt om de hoofdsleutel in de database te versleutelen.
Gebruik de volgende T-SQL-opdracht om een hoofdsleutel te maken:
-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';
Zie CREATE MASTER KEY (Transact-SQL) voor meer informatie over de hoofdsleutel van de database.
De referentie voor het databasebereik maken
Een databasereferentie maakt gebruik van uw werkruimte-id en is nodig voor toegang tot de externe locatie wanneer voor de externe tabel toegang tot de brongegevens is vereist.
Gebruik de volgende opdracht om de referentie voor het databasebereik te maken. Vervang <CredentialName>
door de naam die u wilt gebruiken voor uw databasereferenties binnen het bereik.
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';
Zie CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL) voor meer informatie over referenties met databasebereik.
De externe gegevensbron maken
De volgende stap bestaat uit het maken van een externe gegevensbron die aangeeft waar de brongegevens zich bevinden die door de externe tabel worden gebruikt.
Gebruik de volgende T-SQL-opdracht om de externe gegevensbron te maken:
CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/',
CREDENTIAL = <CredentialName>
);
Hierin:
<ExternalDataSourceName>
is de naam die u wilt gebruiken voor uw externe gegevensbron.<AccountName>
is uw ADLS Gen2-accountnaam.<Container>
is de naam van de container in uw opslagaccount waarin de brongegevens worden opgeslagen.<Folder>
is de map (of het pad met submappen) waarin de brongegevens in uw container worden opgeslagen. U kunt ook een bestandsnaam opgeven als u rechtstreeks naar één bestand verwijst.<Credential>
is de naam van de databasereferentie die u eerder hebt gemaakt.
Zie CREATE EXTERNAL DATA SOURCE (Transact-SQL) voor meer informatie over externe gegevensbronnen.
De externe bestandsindeling maken
De volgende stap bestaat uit het maken van de externe bestandsindeling. Hiermee geeft u de werkelijke indeling op van de gegevens waarnaar wordt verwezen door de externe tabel.
Gebruik de volgende T-SQL-opdracht om de externe bestandsindeling te maken. Vervang <FileFormatName>
door de naam die u wilt gebruiken voor de externe bestandsindeling.
CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True
)
);
In dit voorbeeld past u de parameters zoals FIELD_TERMINATOR
, STRING_DELIMITER
, FIRST_ROW
en andere parameters aan, indien nodig in overeenstemming met uw brongegevens. Zie CREATE EXTERNAL FILE FORMAT voor meer opmaakopties en voor meer informatie over.EXTERNAL FILE FORMAT
De externe tabel maken
Nu alle benodigde objecten met de metagegevens voor veilige toegang tot externe gegevens zijn gemaakt, is het tijd om de externe tabel te maken. Gebruik de volgende T-SQL-opdracht om de externe tabel te maken:
-- 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>
);
Hierin:
<ExternalTableName>
is de naam die u wilt gebruiken voor uw externe tabel.<Path>
is het pad van de brongegevens ten opzichte van de locatie die is opgegeven in de externe gegevensbron.<ExternalDataSourceName>
is de naam van de externe gegevensbron die u eerder hebt gemaakt.<FileFormatName>
is de naam van de externe bestandsindeling die u eerder hebt gemaakt.
Zorg ervoor dat u de tabelnaam en het schema aanpast aan de gewenste naam en het schema van de gegevens in uw bronbestanden.
Een query uitvoeren op de externe tabel
Op dit moment worden alle metagegevens gemaakt die nodig zijn voor toegang tot de externe tabel. Als u uw externe tabel wilt testen, gebruikt u een query zoals het volgende T-SQL-voorbeeld om uw werk te valideren:
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;
Als alles goed is geconfigureerd, ziet u de gegevens uit uw brongegevens als gevolg van deze query.
Zie CREATE EXTERNAL TABLE (Transact-SQL) voor meer informatie en de volledige syntaxis vanCREATE EXTERNAL TABLE
.