Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak tworzyć tabele zewnętrzne lub pozyskiwać dane z kont usługi Azure Data Lake Storage (ADLS) Gen2 przy użyciu tożsamości zarządzanej.
Wymagania wstępne
Do ukończenia tego samouczka są wymagane następujące zasoby:
- Konto usługi Azure Data Lake Storage (ADLS) Gen2
- Obszar roboczy usługi Azure Synapse Analytics i dedykowana pula SQL
Give the workspace identity access to the storage account
Każdy obszar roboczy usługi Azure Synapse Analytics automatycznie tworzy tożsamość zarządzaną, która pomaga skonfigurować bezpieczny dostęp do danych zewnętrznych z obszaru roboczego. Aby dowiedzieć się więcej na temat tożsamości zarządzanych dla usługi Azure Synapse Analytics, odwiedź stronę Tożsamość usługi zarządzanej dla usługi Azure Synapse Analytics.
To enable your managed identity to access data on ADLS Gen2 accounts, you need to give your identity access to the source account. Aby udzielić odpowiednich uprawnień, wykonaj następujące kroki:
- W portalu Azure znajdź swoje konto magazynowe.
- Select Data storage -> Containers, and navigate to the folder where the source data the external table needs access to is.
- Wybierz pozycję Kontrola dostępu (IAM).
- Wybierz Dodaj -> Dodaj przypisanie roli.
- In the list of job function roles, select Storage Blob Data Contributor and select Next.
- Na stronie Dodaj przypisanie roli, wybierz opcję + Wybierz członków. Okienko Wybieranie członków zostanie otwarte.
- Wpisz nazwę identyfikatora obszaru roboczego. Tożsamość miejsca pracy jest taka sama jak nazwa miejsca pracy. When displayed, pick your workspace identity, then Select.
- Na stronie Dodaj przypisanie roli upewnij się, że lista członków zawiera wybrane konto Microsoft Entra ID. Po zweryfikowaniu wybierz pozycję Przejrzyj i przypisz.
- Na stronie potwierdzenia przejrzyj zmiany i wybierz pozycję Przejrzyj i przypisz.
Your workspace identity is now a member of the Storage Blob Data Contributor role and has access to the source folder.
Uwaga
Te kroki dotyczą również zabezpieczania kont usługi ADLS Gen2 skonfigurowanych do ograniczania dostępu publicznego. If your storage account is associated with a secured ADLS Gen2 account or associated with a VNet, the external table or COPY INTO command must use a managed identity. Aby dowiedzieć się więcej na temat zabezpieczania konta usługi ADLS Gen2, zobacz Konfigurowanie zapór i sieci wirtualnych usługi Azure Storage.
Ingest data using COPY INTO
The T-SQL COPY INTO
statement provides flexible, high-throughput data ingestion into your tables, and is the primary strategy to ingest data into your dedicated SQL pool tables.
COPY INTO
umożliwia użytkownikom pozyskiwanie danych z lokalizacji zewnętrznych bez konieczności tworzenia żadnych dodatkowych obiektów bazy danych, które są wymagane dla tabel zewnętrznych.
To run the COPY INTO
statement using a workspace managed identity for authentication, use the following T-SQL command:
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
CREDENTIAL = (IDENTITY = 'Managed Identity'),
[<CopyIntoOptions>]
);
Gdzie:
-
<TableName>
to nazwa tabeli do wprowadzania danych. -
<AccountName>
to nazwa konta usługi ADLS Gen2 -
<Container>
to nazwa kontenera w Twoim koncie magazynu, gdzie przechowywane są dane źródłowe -
<Folder>
to folder (lub ścieżka z podfolderami), w którym dane źródłowe są przechowywane w kontenerze. Możesz również podać nazwę pliku, jeśli wskazuje bezpośrednio na pojedynczy plik. -
<CopyIntoOptions>
to lista innych opcji, które mają zostać podane w instrukcji COPY INTO.
Aby dowiedzieć się więcej i zapoznać się z pełną składnią funkcji COPY INTO, zobacz COPY INTO (Transact-SQL).
Wykonywanie zapytań dotyczących danych w usłudze ADLS Gen2 przy użyciu tabel zewnętrznych
Tabele zewnętrzne umożliwiają użytkownikom wykonywanie zapytań dotyczących danych z kont usługi Azure Data Lake Storage (ADLS) Gen2 bez konieczności uprzedniego pozyskiwania danych. Użytkownicy mogą utworzyć tabelę zewnętrzną, która wskazuje pliki w kontenerze usługi ADLS Gen2 i wysyłać do niej zapytania tak jak zwykła tabela użytkowników.
W poniższych krokach opisano proces tworzenia nowej tabeli zewnętrznej wskazującej dane w usłudze ADLS Gen2 przy użyciu tożsamości zarządzanej na potrzeby uwierzytelniania.
Tworzenie wymaganych obiektów bazy danych
Tabele zewnętrzne wymagają utworzenia następujących obiektów:
- A database master key that encrypts the database scoped credential's secret
- A database scoped credential that uses your workspace identity
- Zewnętrzne źródło danych wskazujące folder źródłowy
- Format pliku zewnętrznego, który definiuje format plików źródłowych
- Definicja tabeli zewnętrznej, która jest używana dla zapytań
Aby wykonać te kroki, użyj edytora SQL w obszarze roboczym usługi Azure Synapse lub preferowanego klienta SQL połączonego z dedykowaną pulą SQL. Przyjrzyjmy się szczegółowo tym krokom.
Tworzenie klucza głównego bazy danych
The database master key is a symmetric key used to protect the private keys of certificates and asymmetric keys that are present in the database and secrets in database scoped credentials. Jeśli w bazie danych znajduje się już klucz główny, nie musisz tworzyć nowego klucza. Zastąp <Secure Password>
bezpiecznym hasłem. To hasło służy do szyfrowania klucza głównego w bazie danych.
Aby utworzyć klucz główny, użyj następującego polecenia języka T-SQL:
-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';
Aby dowiedzieć się więcej na temat klucza głównego bazy danych, zobacz CREATE MASTER KEY (Transact-SQL).
Create the database scoped credential
A database scoped credential uses your workspace identity and is needed to access to the external location anytime the external table requires access to the source data.
To create the database scoped credential, use the following command. Replace <CredentialName>
with the name you would like to use for your database scoped credential.
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';
To learn more about database scoped credentials, see CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL).
Tworzenie zewnętrznego źródła danych
Następnym krokiem jest utworzenie zewnętrznego źródła danych określającego, gdzie znajdują się dane źródłowe używane przez tabelę zewnętrzną.
Aby utworzyć zewnętrzne źródło danych, użyj następującego polecenia języka T-SQL:
CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
TYPE = HADOOP,
LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/',
CREDENTIAL = <CredentialName>
);
Gdzie:
-
<ExternalDataSourceName>
to nazwa, której chcesz użyć dla zewnętrznego źródła danych. -
<AccountName>
to nazwa konta usługi ADLS Gen2. -
<Container>
to nazwa kontenera w koncie przechowywania, w którym są przechowywane dane źródłowe. -
<Folder>
to folder (lub ścieżka z podfolderami), w którym dane źródłowe są przechowywane w kontenerze. Możesz również podać nazwę pliku, jeśli wskazuje bezpośrednio na pojedynczy plik. -
<Credential>
is the name of the database scoped credential you created earlier.
Aby dowiedzieć się więcej na temat zewnętrznych źródeł danych, zobacz CREATE EXTERNAL DATA SOURCE (Transact-SQL).
Tworzenie formatu pliku zewnętrznego
Następnym krokiem jest utworzenie formatu pliku zewnętrznego. Określa rzeczywisty układ danych, do których odwołuje się tabela zewnętrzna.
Aby utworzyć format pliku zewnętrznego, użyj następującego polecenia języka T-SQL. Zastąp <FileFormatName>
nazwą, której chcesz użyć dla formatu pliku zewnętrznego.
CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
FORMAT_TYPE = DELIMITEDTEXT,
FORMAT_OPTIONS (
FIELD_TERMINATOR = ',',
STRING_DELIMITER = '"',
FIRST_ROW = 2,
USE_TYPE_DEFAULT = True
)
);
W tym przykładzie dostosuj parametry, takie jak FIELD_TERMINATOR
, STRING_DELIMITER
, FIRST_ROW
i inne zgodnie z danymi źródłowymi. Aby uzyskać więcej opcji formatowania i dowiedzieć się więcej na temat EXTERNAL FILE FORMAT
, zobacz temat TWORZENIE FORMATU PLIKU ZEWNĘTRZNEGO.
Tworzenie tabeli zewnętrznej
Teraz, gdy zostaną utworzone wszystkie niezbędne obiekty, które przechowują metadane w celu bezpiecznego uzyskiwania dostępu do danych zewnętrznych, nadszedł czas na utworzenie tabeli zewnętrznej. Aby utworzyć tabelę zewnętrzną, użyj następującego polecenia języka T-SQL:
-- 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>
);
Gdzie:
-
<ExternalTableName>
to nazwa, której chcesz użyć dla tabeli zewnętrznej. -
<Path>
to ścieżka danych źródłowych względem lokalizacji określonej w zewnętrznym źródle danych. -
<ExternalDataSourceName>
to nazwa utworzonego wcześniej zewnętrznego źródła danych. -
<FileFormatName>
to nazwa utworzonego wcześniej formatu pliku zewnętrznego.
Pamiętaj, aby dostosować nazwę tabeli i schemat do żądanej nazwy i schematu danych w plikach źródłowych.
Wykonywanie zapytań względem tabeli zewnętrznej
W tym momencie tworzone są wszystkie metadane wymagane do uzyskania dostępu do tabeli zewnętrznej. Aby przetestować tabelę zewnętrzną, użyj zapytania, takiego jak poniższy przykład języka T-SQL, aby zweryfikować swoją pracę:
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;
Jeśli wszystko zostało prawidłowo skonfigurowane, dane z danych źródłowych powinny być widoczne w wyniku tego zapytania.
Aby dowiedzieć się więcej i zapoznać się z pełną składnią CREATE EXTERNAL TABLE
, zobacz CREATE EXTERNAL TABLE (Transact-SQL).