Samouczek: ładowanie danych zewnętrznych przy użyciu tożsamości zarządzanej
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
Przyznawanie tożsamości obszaru roboczego dostępu do konta magazynu
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.
Aby umożliwić tożsamości zarządzanej dostęp do danych na kontach usługi ADLS Gen2, musisz udzielić tożsamości dostępu do konta źródłowego. Aby udzielić odpowiednich uprawnień, wykonaj następujące kroki:
- W witrynie Azure Portal znajdź swoje konto magazynu.
- Wybierz pozycję Magazyn danych —> kontenery i przejdź do folderu, w którym dane źródłowe tabeli zewnętrznej wymagają dostępu.
- Wybierz pozycję Kontrola dostępu (IAM).
- Wybierz pozycję Dodaj —> dodaj przypisanie roli.
- Na liście ról funkcji zadania wybierz pozycję Współautor danych obiektu blob usługi Storage, a następnie wybierz pozycję Dalej.
- Na stronie Dodawanie przypisania roli wybierz pozycję + Wybierz członków. Zostanie otwarte okienko Wybieranie członków .
- Wpisz nazwę tożsamości obszaru roboczego. Tożsamość obszaru roboczego jest taka sama jak nazwa obszaru roboczego. Po wyświetleniu wybierz tożsamość obszaru roboczego, a następnie wybierz pozycję Wybierz.
- Na stronie Dodawanie przypisania roli upewnij się, że lista Członków zawiera żądane konto Microsoft Entra ID. Po zweryfikowaniu wybierz pozycję Przejrzyj i przypisz.
- Na stronie potwierdzenia przejrzyj zmiany i wybierz pozycję Przejrzyj i przypisz.
Tożsamość obszaru roboczego jest teraz członkiem roli Współautor danych obiektu blob usługi Storage i ma dostęp do folderu źródłowego.
Uwaga
Te kroki dotyczą również zabezpieczania kont usługi ADLS Gen2 skonfigurowanych do ograniczania dostępu publicznego. Aby dowiedzieć się więcej na temat zabezpieczania konta usługi ADLS Gen2, zobacz Konfigurowanie zapór i sieci wirtualnych usługi Azure Storage.
Pozyskiwanie danych przy użyciu funkcji COPY INTO
Instrukcja T-SQL COPY INTO
zapewnia elastyczne, wysokiej przepływności pozyskiwanie danych do tabel i jest podstawową strategią pozyskiwania danych do dedykowanych tabel puli SQL. 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.
Aby uruchomić instrukcję COPY INTO
przy użyciu tożsamości zarządzanej obszaru roboczego do uwierzytelniania, użyj następującego polecenia T-SQL:
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
CREDENTIAL = (IDENTITY = 'Managed Identity'),
[<CopyIntoOptions>]
);
Gdzie:
<TableName>
to nazwa tabeli do pozyskiwania danych do<AccountName>
to nazwa konta usługi ADLS Gen2<Container>
to nazwa kontenera na koncie magazynu, na 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.<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:
- Klucz główny bazy danych, który szyfruje wpis tajny poświadczeń o określonym zakresie bazy danych
- Poświadczenie o zakresie bazy danych korzystające z tożsamości obszaru roboczego
- 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
Klucz główny bazy danych jest kluczem symetrycznym używanym do ochrony kluczy prywatnych certyfikatów i kluczy asymetrycznych znajdujących się w bazie danych i wpisach tajnych w poświadczeniach o określonym zakresie bazy danych. Jeśli w bazie danych znajduje się już klucz główny, nie musisz tworzyć nowego klucza. Zastąp <Secure Password>
ciąg 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).
Tworzenie poświadczeń o zakresie bazy danych
Poświadczenie o zakresie bazy danych używa tożsamości obszaru roboczego i jest wymagane do uzyskania dostępu do lokalizacji zewnętrznej w dowolnym momencie, gdy tabela zewnętrzna wymaga dostępu do danych źródłowych.
Aby utworzyć poświadczenie o zakresie bazy danych, użyj następującego polecenia. Zastąp <CredentialName>
ciąg nazwą, której chcesz użyć dla poświadczeń o określonym zakresie bazy danych.
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';
Aby dowiedzieć się więcej na temat poświadczeń o zakresie bazy danych, zobacz 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 na koncie magazynu, na 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>
to nazwa utworzonego wcześniej poświadczenia o zakresie bazy danych.
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>
ciąg 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 potrzebami zgodnie z danymi źródłowymi. Aby uzyskać więcej opcji formatowania i dowiedzieć się więcej na temat EXTERNAL FILE FORMAT
programu , zobacz CREATE EXTERNAL FILE FORMAT (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
programu , zobacz CREATE EXTERNAL TABLE (Transact-SQL).