Share via


Carregar dados do Armazenamento Azure Data Lake em pools SQL dedicados no Azure Synapse Analytics

Este guia descreve como usar a instrução COPY para carregar dados do Armazenamento do Azure Data Lake. Para obter exemplos rápidos sobre como usar a instrução COPY em todos os métodos de autenticação, visite a seguinte documentação: Carregue dados com segurança usando pools SQL dedicados.

Nota

Para fornecer comentários ou relatar problemas sobre a instrução COPY, envie um e-mail para a seguinte lista de distribuição: sqldwcopypreview@service.microsoft.com.

  • Crie a tabela de destino para carregar dados do Armazenamento do Azure Data Lake.
  • Crie a instrução COPY para carregar dados no data warehouse.

Se não tiver uma subscrição do Azure, crie uma conta do Azure gratuita antes de começar.

Antes de começar

Antes de começar este tutorial, transfira e instale a versão mais recente do SQL Server Management Studio (SSMS).

Para executar este tutorial, você precisa:

  • Um pool SQL dedicado. Consulte Criar um pool SQL dedicado e consultar dados.
  • Uma conta de armazenamento Data Lake. Consulte Introdução ao Armazenamento do Azure Data Lake. Para essa conta de armazenamento, você precisará configurar ou especificar uma das seguintes credenciais para carregar: uma chave de conta de armazenamento, uma chave de assinatura de acesso compartilhado (SAS), um usuário do Aplicativo de Diretório do Azure ou um usuário do Microsoft Entra que tenha a função apropriada do Azure para a conta de armazenamento.
  • Atualmente, a ingestão de dados usando o comando COPY em uma conta de Armazenamento do Azure que está usando o novo recurso de partição DNS do Armazenamento do Azure resulta em um erro. Provisione uma conta de armazenamento em uma assinatura que não use particionamento DNS para este tutorial.

Criar a tabela de destino

Conecte-se ao seu pool SQL dedicado e crie a tabela de destino para a qual você carregará. Neste exemplo, estamos criando uma tabela de dimensões do produto.

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

Criar a instrução COPY

Conecte-se ao pool dedicado do SQL e execute a instrução COPY. Para obter uma lista completa de exemplos, visite a seguinte documentação: Carregue dados com segurança usando pools SQL dedicados.

-- 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');

Otimizar a compactação columnstore

Por padrão, as tabelas são definidas como um índice columnstore clusterizado. Após a conclusão de um carregamento, algumas das linhas de dados podem não ser compactadas no columnstore. Há uma variedade de razões pelas quais isso pode acontecer. Para saber mais, consulte Gerenciar índices columnstore.

Para otimizar o desempenho da consulta e a compactação columnstore após uma carga, recrie a tabela para forçar o índice columnstore a compactar todas as linhas.


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

Otimizar estatísticas

É melhor criar estatísticas de coluna única imediatamente após uma carga. Existem algumas opções para as estatísticas. Por exemplo, se você criar estatísticas de coluna única em cada coluna, pode levar muito tempo para reconstruir todas as estatísticas. Se você souber que determinadas colunas não estarão em predicados de consulta, poderá ignorar a criação de estatísticas nessas colunas.

Se você decidir criar estatísticas de coluna única em cada coluna de cada tabela, poderá usar o exemplo prc_sqldw_create_stats de código de procedimento armazenado no artigo de estatísticas .

O exemplo a seguir é um bom ponto de partida para criar estatísticas. Ele cria estatísticas de coluna única em cada coluna na tabela de dimensões e em cada coluna de junção nas tabelas de fatos. Você sempre pode adicionar estatísticas de uma ou várias colunas a outras colunas da tabela de fatos mais tarde.

Conquista desbloqueada!

Você carregou dados com êxito em seu data warehouse. Parabéns!

Próximos passos

Carregar dados é a primeira etapa para desenvolver uma solução de data warehouse usando o Azure Synapse Analytics. Consulte os nossos recursos de desenvolvimento.

Para obter mais exemplos e referências de carregamento, consulte a seguinte documentação: