Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
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 Gen2-account (ADLS)
- 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 de optie Storage Blob Data Contributor en selecteer Volgende.
- Op de pagina Roltoewijzing toevoegen, selecteer + Leden selecteren. 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, kies uw werkruimte-identiteit en selecteer 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-identiteit is nu lid van de rol Storage Blob Data Contributor 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. Als uw opslagaccount is gekoppeld aan een beveiligd ADLS Gen2-account of is gekoppeld aan een VNet, moet de externe tabel of COPY INTO-opdracht een beheerde identiteit gebruiken. 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>]
);
Waar:
-
<TableName>is de naam van de tabel waarin gegevens moeten worden opgenomen - De naam van uw ADLS Gen2-account is
<AccountName> -
<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>Dit is de lijst met alle andere opties die u voor de INSTRUCTIE COPY INTO wilt opgeven.
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 met beperkte reikwijdte die de identiteit van uw werkruimte gebruikt
- 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 aanmaken
Een database-gebaseerde referentie maakt gebruik van uw werkruimte-identiteit en is nodig om toegang te krijgen tot de externe locatie wanneer de externe tabel toegang tot de brongegevens nodig heeft.
Gebruik het volgende commando om de database-bereikreferentie te maken. Vervang <CredentialName> door de naam die u wilt gebruiken voor uw databasebereikreferentie.
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';
Bekijk CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL) voor meer informatie over databasebereikreferenties.
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>
);
Waar:
-
<ExternalDataSourceName>is de naam die u wilt gebruiken voor uw externe gegevensbron. -
<AccountName>is de naam van uw ADLS Gen2-account. -
<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 database-scoped referentie die u eerder hebt aangemaakt.
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_ROWen andere parameters aan, indien nodig in overeenstemming met uw brongegevens. Voor meer opmaakopties en meer informatie over EXTERNAL FILE FORMAT, zie CREATE 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>
);
Waar:
-
<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 voor meer informatie en de volledige syntaxis van.