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:
- No portal do Azure, encontre a conta de armazenamento.
- 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.
- Selecione IAM (Controle de acesso).
- Selecione Adicionar –> Adicionar atribuição de função.
- Na lista de funções de trabalho, selecione Leitor de Dados do Blob de Armazenamento e selecione Avançar.
- Na página Adicionar atribuição de função, selecione + Selecionar membros. O painel Selecionar membros é aberto no canto direito.
- Digite o nome da conta do Microsoft Entra ID desejada. Quando exibido, escolha a conta desejada e escolha Selecionar.
- 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.
- 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çãoCOPY 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:
- Uma fonte de dados externa que aponta para a pasta de origem
- Um formato de arquivo externo que define o formato dos arquivos de origem
- 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:
<ExternalTableName>
é o nome que você deseja usar para sua tabela externa.<Path>
é o caminho dos dados de origem, em relação ao local especificado na fonte de dados externa.<ExternalDataSourceName>
é o nome da fonte de dados externa que você criou.<FileFormatName>
é o nome do formato de arquivo externo criado.
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).