Samouczek: ładowanie danych zewnętrznych przy użyciu tożsamości zarządzanej

Tip

Microsoft Fabric Data Warehouse to magazyn relacyjny w skali przedsiębiorstwa na podstawie bazy danych data lake z architekturą gotową do użycia w przyszłości, wbudowaną sztuczną inteligencją i nowymi funkcjami. Jeśli dopiero zaczynasz korzystać z magazynowania danych, zacznij od Fabric Data Warehouse. Istniejące obciążenia dedykowanej puli SQL mogą zostać zaktualizowane do Fabric, aby uzyskać dostęp do nowych możliwości w zakresie nauki o danych, analizy w czasie rzeczywistym i raportowania.

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ć dostęp Twojej tożsamości zarządzanej do danych na kontach ADLS Gen2, musisz nadać tej tożsamości uprawnienia dostępu do konta źródłowego. Aby udzielić odpowiednich uprawnień, wykonaj następujące kroki:

  1. W portalu Azure znajdź swoje konto magazynowe.
  2. Wybierz Magazyn danych —> Kontenery i przejdź do folderu, w którym znajdują się dane źródłowe, do których musi mieć dostęp tabela zewnętrzna.
  3. Wybierz pozycję Kontrola dostępu (IAM).
  4. Wybierz Dodaj -> Dodaj przypisanie roli.
  5. Na liście ról funkcji zadania wybierz pozycję Współautor danych obiektu blob usługi Storage , a następnie wybierz pozycję Dalej.
  6. Na stronie Dodaj przypisanie roli, wybierz opcję + Wybierz członków. Okienko Wybieranie członków zostanie otwarte.
  7. Wpisz nazwę identyfikatora obszaru roboczego. Tożsamość miejsca pracy jest taka sama jak nazwa miejsca pracy. Po wyświetleniu wybierz tożsamość obszaru roboczego, a następnie Wybierz.
  8. 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.
  9. Na stronie potwierdzenia przejrzyj zmiany i wybierz pozycję Przejrzyj i przypisz.

Tożsamość twojego obszaru roboczego teraz należy do roli Współtwórcy Danych Blob 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. Jeśli konto magazynu jest skojarzone z zabezpieczonym kontem usługi ADLS Gen2 lub skojarzonym z siecią wirtualną, tabela zewnętrzna lub polecenie COPY INTO musi używać tożsamości zarządzanej. 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 zarządzanej tożsamości 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 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:

  1. Klucz główny bazy danych, który szyfruje tajny sekret poświadczenia o zakresie bazy danych.
  2. Poświadczenie ograniczone do zakresu bazy danych, które wykorzystuje tożsamość workspace'u
  3. Zewnętrzne źródło danych wskazujące folder źródłowy
  4. Format pliku zewnętrznego, który definiuje format plików źródłowych
  5. 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 oraz tajemnic w poświadczeniach z zakresem w bazie danych. 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).

Utwórz poświadczenie w zakresie bazy danych

Poświadczenie powiązane z zakresem bazy danych wykorzystuje tożsamość obszaru roboczego i jest wymagane do uzyskania dostępu do zewnętrznej lokalizacji, kiedy tabela zewnętrzna potrzebuje dostępu do danych źródłowych.

Aby utworzyć poświadczenie o zakresie bazy danych, użyj następującego polecenia. Zamień <CredentialName> na nazwę, którą chciałbyś 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 UTWÓRZ POŚWIADCZENIA O ZAKRESIE BAZY DANYCH (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> 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> 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:

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).