Udostępnij za pośrednictwem


Ładowanie danych z usługi Azure Data Lake Storage do dedykowanych pul SQL w usłudze Azure Synapse Analytics

W tym przewodniku opisano sposób ładowania danych z usługi Azure Data Lake Storage przy użyciu instrukcji COPY. Aby uzyskać krótkie przykłady użycia instrukcji COPY we wszystkich metodach uwierzytelniania, zapoznaj się z następującą dokumentacją: Bezpieczne ładowanie danych przy użyciu dedykowanych pul SQL.

Uwaga

Aby przekazać opinię lub zgłosić problemy dotyczące instrukcji COPY, wyślij wiadomość e-mail na następującą listę dystrybucyjną: sqldwcopypreview@service.microsoft.com.

  • Utwórz tabelę docelową, aby załadować dane z usługi Azure Data Lake Storage.
  • Utwórz instrukcję COPY, aby załadować dane do magazynu danych.

Jeśli nie masz subskrypcji platformy Azure, przed rozpoczęciem utwórz bezpłatne konto platformy Azure.

Zanim rozpoczniesz

Zanim rozpoczniesz ten samouczek, pobierz i zainstaluj najnowszą wersję programu SQL Server Management Studio (SSMS).

Do uruchomienia tego samouczka potrzebne są następujące elementy:

  • Dedykowana pula SQL. Zobacz Tworzenie dedykowanej puli SQL i wykonywanie zapytań dotyczących danych.
  • Konto usługi Data Lake Storage. Zobacz Rozpoczynanie pracy z usługą Azure Data Lake Storage. W przypadku tego konta magazynu należy skonfigurować lub określić jedno z następujących poświadczeń do załadowania: klucz konta magazynu, klucz sygnatury dostępu współdzielonego (SAS), użytkownik aplikacji usługi Azure Directory lub użytkownik usługi Microsoft Entra, który ma odpowiednią rolę platformy Azure dla konta magazynu.
  • Obecnie pozyskiwanie danych przy użyciu polecenia COPY na koncie usługi Azure Storage, które korzysta z nowej funkcji partycji DNS usługi Azure Storage, powoduje wystąpienie błędu. Aprowizacja konta magazynu w subskrypcji, która nie korzysta z partycjonowania DNS na potrzeby tego samouczka.

Tworzenie tabeli docelowej

Połączenie do dedykowanej puli SQL i utwórz tabelę docelową, do której zostanie załadowana. W tym przykładzie tworzysz tabelę wymiarów produktu.

-- A: Create the target table
-- DimProduct
CREATE TABLE [dbo].[DimProduct]
(
    [ProductKey] [int] NOT NULL,
    [ProductLabel] [nvarchar](255) NULL,
    [ProductName] [nvarchar](500) NULL
)
WITH
(
    DISTRIBUTION = HASH([ProductKey]),
    CLUSTERED COLUMNSTORE INDEX
    --HEAP
);

Tworzenie instrukcji COPY

Połączenie do dedykowanej puli SQL i uruchom instrukcję COPY. Pełną listę przykładów można znaleźć w następującej dokumentacji: Bezpieczne ładowanie danych przy użyciu dedykowanych pul SQL.

-- B: Create and execute the COPY statement

COPY INTO [dbo].[DimProduct]  
--The column list allows you map, omit, or reorder input file columns to target table columns.  
--You can also specify the default value when there is a NULL value in the file.
--When the column list is not specified, columns will be mapped based on source and target ordinality
(
    ProductKey default -1 1,
    ProductLabel default 'myStringDefaultWhenNull' 2,
    ProductName default 'myStringDefaultWhenNull' 3
)
--The storage account location where you data is staged
FROM 'https://storageaccount.blob.core.windows.net/container/directory/'
WITH  
(
   --CREDENTIAL: Specifies the authentication method and credential access your storage account
   CREDENTIAL = (IDENTITY = '', SECRET = ''),
   --FILE_TYPE: Specifies the file type in your storage account location
   FILE_TYPE = 'CSV',
   --FIELD_TERMINATOR: Marks the end of each field (column) in a delimited text (CSV) file
   FIELDTERMINATOR = '|',
   --ROWTERMINATOR: Marks the end of a record in the file
   ROWTERMINATOR = '0x0A',
   --FIELDQUOTE: Specifies the delimiter for data of type string in a delimited text (CSV) file
   FIELDQUOTE = '',
   ENCODING = 'UTF8',
   DATEFORMAT = 'ymd',
   --MAXERRORS: Maximum number of reject rows allowed in the load before the COPY operation is canceled
   MAXERRORS = 10,
   --ERRORFILE: Specifies the directory where the rejected rows and the corresponding error reason should be written
   ERRORFILE = '/errorsfolder',
) OPTION (LABEL = 'COPY: ADLS tutorial');

Optymalizowanie kompresji magazynu kolumn

Domyślnie tabele są definiowane jako indeks klastrowanego magazynu kolumn. Po zakończeniu ładowania niektóre wiersze danych mogą nie zostać skompresowane do magazynu kolumn. Istnieje wiele powodów, dla których może się to zdarzyć. Aby dowiedzieć się więcej, zobacz Zarządzanie indeksami magazynu kolumn.

Aby zoptymalizować wydajność zapytań i kompresję magazynu kolumn po załadowaniu, ponownie skompiluj tabelę, aby wymusić kompresowanie wszystkich wierszy indeksu magazynu kolumn.


ALTER INDEX ALL ON [dbo].[DimProduct] REBUILD;

Optymalizowanie statystyk

Najlepiej jest utworzyć statystyki z jedną kolumną natychmiast po załadowaniu. Istnieją pewne opcje dotyczące statystyk. Jeśli na przykład utworzysz statystyki z jedną kolumną dla każdej kolumny, ponowne skompilowanie wszystkich statystyk może zająć dużo czasu. Jeśli wiesz, że niektóre kolumny nie będą w predykatach zapytań, możesz pominąć tworzenie statystyk dotyczących tych kolumn.

Jeśli zdecydujesz się utworzyć statystyki z jedną kolumną dla każdej kolumny każdej tabeli, możesz użyć przykładowego prc_sqldw_create_stats kodu procedury składowanej w artykule statystyk .

Poniższy przykład to dobry punkt wyjścia do tworzenia statystyk. Tworzy statystyki z jedną kolumną dla każdej kolumny w tabeli wymiarów i dla każdej kolumny łączącej w tabelach faktów. Zawsze można dodawać statystyki pojedyncze lub wielokolumny do innych kolumn tabeli faktów później.

Osiągnięcie odblokowane!

Pomyślnie załadowano dane do magazynu danych. Dobra robota!

Następne kroki

Ładowanie danych to pierwszy krok do opracowania rozwiązania magazynu danych przy użyciu usługi Azure Synapse Analytics. Zapoznaj się z naszymi zasobami programistycznymi.

Aby uzyskać więcej przykładów ładowania i odwołań, zapoznaj się z następującą dokumentacją: