Compartilhar via


Tutorial: Carregar dados externos usando o Microsoft Entra ID

Este artigo explica como criar tabelas externas usando a passagem do Microsoft Entra ID.

Pré-requisitos

Os seguintes recursos são necessários para concluir o tutorial:

  • Um workspace do Azure Synapse Analytics e um pool de SQL dedicado

Conceder à conta do Microsoft Entra ID acesso à conta de armazenamento

Este exemplo usa uma conta do Microsoft Entra ID (ou grupo) ao ser autenticado nos dados de origem.

Para habilitar o acesso aos dados em contas do Azure Data Lake Storage (ADLS) Gen2, você precisa conceder à sua conta do Microsoft Entra ID (ou grupo) acesso à conta de origem. Para conceder as permissões adequadas, siga estas etapas:

  1. No portal do Azure, encontre a conta de armazenamento.
  2. Selecione Armazenamento de dados ->Contêineres e navegue até a pasta onde estão os dados de origem aos quais a tabela externa precisa ter acesso.
  3. Selecione IAM (Controle de acesso).
  4. Selecione Adicionar –> Adicionar atribuição de função.
  5. Na lista de funções de trabalho, selecione Leitor de Dados do Blob de Armazenamento e selecione Avançar.
  6. Na página Adicionar atribuição de função, selecione + Selecionar membros. O painel Selecionar membros é aberto no canto direito.
  7. Digite o nome da conta do Microsoft Entra ID desejada. Quando exibido, escolha a conta desejada e escolha Selecionar.
  8. Na página Adicionar atribuição de função, verifique se a lista de membros inclui sua conta desejada do Microsoft Entra ID. Depois de verificado, selecione Examinar + atribuir.
  9. Na página de confirmação, examine as alterações e selecione Examinar + atribuir.

A conta ou grupo do Microsoft Entra ID agora é membro da função Leitor de Dados do Blob de Armazenamento e tem acesso à pasta de origem.

Ingerir dados usando o COPY INTO

A instrução T-SQL COPY INTO fornece uma ingestão de dados flexível e de alta taxa de transferência para suas tabelas, sendo a estratégia principal para ingerir dados nas tabelas do seu pool de SQL dedicado. Permite que os usuários ingiram dados de locais externos sem precisar criar os objetos adicionais do banco de dados necessários para tabelas externas.

A instrução COPY INTO usa o argumento CREDENTIAL para especificar o método de autenticação usado para se conectar à conta de origem. No entanto, ao autenticar usando o Microsoft Entra ID ou uma conta de armazenamento pública, CREDENTIAL não precisa ser especificado. Para executar a instrução COPY INTO usando uma identidade gerenciada de workspace para autenticação, use o seguinte comando T-SQL:

COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
    [<CopyIntoOptions>]
);

Onde:

  • <TableName> é o nome da tabela na qual os dados serão ingeridos.
  • <AccountName> é o nome da sua conta do ADLS Gen2.
  • <Container> é o nome do contêiner em sua conta de armazenamento em que os dados de origem são armazenados
  • <Folder> é a pasta (ou caminho com subpastas) em que os dados de origem são armazenados em seu contêiner. Você também pode fornecer um nome de arquivo se estiver apontando diretamente para um único arquivo.
  • <CopyIntoOptions> é a lista de outras opções que você deseja fornecer à instrução COPY INTO.

Para saber mais e explorar a sintaxe completa, consulte COPY INTO (Transact-SQL).

Criar os objetos de banco de dados necessários

As tabelas externas exigem que os seguintes objetos sejam criados:

  1. Uma fonte de dados externa que aponta para a pasta de origem
  2. Um formato de arquivo externo que define o formato dos arquivos de origem
  3. Uma definição de tabela externa usada para consultas

Para seguir estas etapas, você precisa usar o editor de SQL no Workspace do Azure Synapse ou seu cliente SQL preferido conectado ao pool de SQL dedicado. Vamos examinar essas etapas em detalhes.

Criar a fonte de dados externa

A próxima etapa é criar uma fonte de dados externa que especifique onde residem os dados de origem usados pela tabela externa.

Para criar a fonte de dados externa, use o seguinte comando T-SQL:

CREATE EXTERNAL DATA SOURCE <ExternalDataSourceName>
WITH (
    TYPE = HADOOP,
    LOCATION = 'abfss://<Container>@<AccountName>.dfs.core.windows.net/<Folder>/
);

Onde:

  • <ExternalDataSourceName> é o nome que você deseja usar para sua fonte de dados externa.
  • <AccountName> é o nome da sua conta do ADLS Gen2.
  • <Container> é o nome do contêiner em sua conta de armazenamento em que os dados de origem são armazenados.
  • <Folder> é a pasta (ou caminho com subpastas) em que os dados de origem são armazenados em seu contêiner.

Para saber mais sobre fontes de dados externas, consulte CREATE EXTERNAL DATA SOURCE (Transact-SQL).

Criar o formato de arquivo externo

A próxima etapa é criar o formato de arquivo externo. Ele especifica o layout real dos dados referenciados pela tabela externa.

Para criar o formato de arquivo externo, use o comando T-SQL a seguir. Substitua <FileFormatName> pelo nome que você deseja usar para o formato de arquivo externo.

CREATE EXTERNAL FILE FORMAT <FileFormatName>
WITH (
    FORMAT_TYPE = DELIMITEDTEXT,
    FORMAT_OPTIONS (
        FIELD_TERMINATOR = ',',
        STRING_DELIMITER = '"',
        FIRST_ROW = 2,
        USE_TYPE_DEFAULT = True
    )
);

Neste exemplo, ajuste parâmetros como FIELD_TERMINATOR, STRING_DELIMITER, FIRST_ROW e outros, conforme necessário, de acordo com seus dados de origem. Para obter mais opções de formato e saber mais, consulte CREATE EXTERNAL FILE FORMAT (Transact-SQL).

Criar a tabela externa

Agora que os objetos necessários que contêm os metadados para acessar os dados externos com segurança foram criados, é hora de criar a tabela externa. Para criar a tabela externa, use o seguinte comando 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>
);

Onde:

Ajuste o nome da tabela e o esquema para o nome desejado e o esquema dos dados em seus arquivos de origem.

Neste ponto, todos os metadados necessários para acessar a tabela externa estão criados. Para testar sua tabela externa, use uma consulta como o seguinte exemplo T-SQL para validar seu trabalho:

SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;

Se tudo estiver configurado corretamente, você deverá ver os dados de seus dados de origem como resultado dessa consulta.

Para obter mais informações sobre CREATE EXTERNAL TABLE, consulte CREATE EXTERNAL TABLE (Transact-SQL).