Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
Tip
Microsoft Fabric Data Warehouse é um armazém relacional de escala empresarial baseado numa base de data lake, com uma arquitetura pronta para o futuro, IA incorporada e novas funcionalidades. Se és novo no data warehousing, começa pelo Fabric Data Warehouse. As cargas de trabalho existentes de pool SQL dedicado podem atualizar para o Fabric para acessar novas capacidades em ciência de dados, análise em tempo real e relatórios.
Este artigo explica como criar tabelas externas ou ingerir dados a partir de contas Gen2 do Azure Data Lake Storage (ADLS) usando uma identidade gerida.
Prerequisites
Os seguintes recursos são necessários para completar este tutorial:
- Uma conta do Azure Data Lake Storage (ADLS) Gen2
- Um espaço de trabalho Azure Synapse Analytics e um pool SQL dedicado
Dar à identidade do espaço de trabalho acesso à conta de armazenamento
Cada espaço de trabalho da Azure Synapse Analytics cria automaticamente uma identidade gerida que o ajuda a configurar o acesso seguro a dados externos a partir do seu espaço de trabalho. Para saber mais sobre identidades geridas para Azure Synapse Analytics, visite Identidade de serviço gerido para Azure Synapse Analytics.
Para permitir que a sua identidade gerida aceda a dados nas contas ADLS Gen2, precisa de dar acesso à sua identidade à conta de origem. Para conceder as permissões adequadas, siga estes passos:
- No portal do Azure, encontre a sua conta de armazenamento.
- Selecione Armazenamento de Dados -> Contentores, e navegue até à pasta onde está o dado de origem a que a tabela externa precisa de acesso.
- Selecione Controlo de acesso (IAM) .
- Selecionar Adicionar -> Adicionar atribuição de funções.
- Na lista de funções de trabalho, selecione Storage Blob Data Contributor e selecione Seguinte.
- Na página Adicionar atribuição de funções , selecione + Selecione membros. Abre-se o painel dos membros da Seleção .
- Digite o nome da identidade do seu espaço de trabalho. A identidade do espaço de trabalho é a mesma que o nome do seu espaço de trabalho. Quando aparecer, escolhe a identidade do teu espaço de trabalho e depois seleciona.
- Na página Adicionar atribuição de funções, certifique-se de que a lista de Membros inclui a conta de Microsoft Entra ID desejada. Depois de verificado, selecione Rever + atribuir.
- Na página de confirmação, reveja as alterações e selecione Rever + atribuir.
A identidade do seu espaço de trabalho é agora membro da função Storage Blob Data Contributor e tem acesso à pasta de origem.
Nota
Estes passos também se aplicam a contas ADLS Gen2 seguras configuradas para restringir o acesso público. Se a sua conta de armazenamento estiver associada a uma conta ADLS Gen2 segura ou associada a um VNet, a tabela externa ou o comando COPY INTO deve usar uma identidade gerida. Para saber mais sobre como proteger a sua conta ADLS Gen2, veja Configure firewalls Armazenamento do Azure e redes virtuais.
Ingerir dados usando COPY INTO
A instrução T-SQL COPY INTO proporciona uma ingestão de dados flexível e de alto rendimento nas suas tabelas, sendo a principal estratégia para integrar dados nas suas tabelas de pool SQL dedicadas.
COPY INTO permite aos utilizadores ingerir dados de locais externos sem ter de criar quaisquer dos objetos extra da base de dados necessários para tabelas externas.
Para executar a COPY INTO instrução usando uma identidade gerida por workspace para autenticação, use o seguinte comando T-SQL:
COPY INTO <TableName>
FROM 'https://<AccountName>.dfs.core.windows.net/<Container>/<Folder>/ '
WITH
(
CREDENTIAL = (IDENTITY = 'Managed Identity'),
[<CopyIntoOptions>]
);
Onde:
-
<TableName>é o nome da tabela para ingestão de dados em -
<AccountName>é o nome da tua conta ADLS Gen2 -
<Container>é o nome do contentor dentro da sua conta de armazenamento onde os dados de origem são armazenados -
<Folder>é a pasta (ou caminho com subpastas) onde os dados de origem são armazenados dentro do seu contentor. Também pode fornecer um nome de ficheiro ao indicar diretamente um único ficheiro. -
<CopyIntoOptions>é a lista de quaisquer outras opções que pretende fornecer ao comando COPY INTO.
Para saber mais e explorar a sintaxe completa de COPY INTO, veja COPY INTO (Transact-SQL).
Consultar dados no ADLS Gen2 usando tabelas externas
Tabelas externas permitem aos utilizadores consultar dados das contas Gen2 do Azure Data Lake Storage (ADLS) sem necessidade de ingerir dados primeiro. Os utilizadores podem criar uma tabela externa que aponta para ficheiros num contentor ADLS Gen2 e consultá-la tal como numa tabela de utilizador normal.
Os passos seguintes descrevem o processo para criar uma nova tabela externa apontando para dados no ADLS Gen2, usando uma identidade gerida para autenticação.
Criar os objetos de base de dados necessários
As tabelas externas exigem a criação dos seguintes objetos:
- Uma chave mestra de base de dados que encripta o segredo da credencial com âmbito de base de dados
- Uma credencial com âmbito de base de dados que utiliza a identidade do seu espaço de trabalho
- Uma fonte de dados externa que aponta para a pasta de origem
- Um formato de ficheiro externo que define o formato dos ficheiros de origem
- Uma definição de tabela externa usada para consultas
Para seguir estes passos, utilize o editor SQL no Azure Synapse Workspace, ou o seu cliente SQL preferido ligado ao seu SQL Pool dedicado. Vamos analisar estes passos em detalhe.
Criar a chave mestra da base de dados
A chave mestra do banco de dados é uma chave simétrica usada para proteger as chaves privadas de certificados e chaves assimétricas presentes no banco de dados e segredos nas credenciais com escopo do banco de dados. Se já existe uma chave mestra na base de dados, não precisa de criar uma nova. Substitua <Secure Password> por uma palavra-passe segura. Esta palavra-passe é usada para encriptar a chave mestra na base de dados.
Para criar uma chave mestra, use o seguinte comando T-SQL:
-- Replace <Secure Password> with a secure password
CREATE MASTER KEY ENCRYPTION BY PASSWORD = '<Secure Password>';
Para saber mais sobre a chave mestra da base de dados, consulte CRIAR CHAVE MESTRA (Transact-SQL).
Crie a credencial com âmbito de base de dados
Uma credencial com âmbito de base de dados utiliza a identidade do seu espaço de trabalho e é necessária para aceder à localização externa sempre que a tabela externa necessita de acesso aos dados de origem.
Para criar a credencial com âmbito de base de dados, use o seguinte comando. Substitua <CredentialName> pelo nome que gostaria de usar para a credencial com âmbito de base de dados.
CREATE DATABASE SCOPED CREDENTIAL <CredentialName> WITH IDENTITY = 'Managed Service Identity';
Para saber mais sobre credenciais com âmbito de base de dados, consulte CRIAR CREDENCIAL COM ÂMBITO DE BASE DE DADOS (Transact-SQL).
Criar a fonte de dados externa
O passo seguinte é 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>/',
CREDENTIAL = <CredentialName>
);
Onde:
-
<ExternalDataSourceName>é o nome que pretende usar para a sua fonte de dados externa. -
<AccountName>é o nome da tua conta ADLS Gen2. -
<Container>é o nome do contentor dentro da sua conta de armazenamento onde os dados de origem são armazenados. -
<Folder>é a pasta (ou caminho com subpastas) onde os dados de origem são armazenados dentro do seu contentor. Também pode fornecer um nome de ficheiro se apontar diretamente para um único ficheiro. -
<Credential>é o nome da credencial de âmbito da base de dados que criou anteriormente.
Para saber mais sobre fontes de dados externas, consulte CRIAR FONTE DE DADOS EXTERNA (Transact-SQL).
Criar o formato de ficheiro externo
O passo seguinte é criar o formato de ficheiro externo. Especifica o layout real dos dados referenciados pela tabela externa.
Para criar o formato de ficheiro externo, use o seguinte comando T-SQL. Substitui <FileFormatName> pelo nome que queres usar para o formato de ficheiro 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 os seus dados de origem. Para mais opções de formatação e para saber mais sobre EXTERNAL FILE FORMAT, consulte CRIAR FORMATO DE FICHEIRO EXTERNO.
Crie a tabela externa
Agora que todos os objetos necessários que contêm os metadados para aceder de forma segura a dados externos estão criados, é altura 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 pretende usar para a sua tabela externa. -
<Path>é o caminho dos dados de origem, relativo à localização especificada na fonte de dados externa. -
<ExternalDataSourceName>é o nome da fonte de dados externa que criou anteriormente. -
<FileFormatName>é o nome do formato de ficheiro externo que criou anteriormente.
Certifique-se de ajustar o nome da tabela e o esquema para o nome desejado e para o esquema dos dados nos seus ficheiros fonte.
Consultar a tabela externa
Neste ponto, todos os metadados necessários para aceder à tabela externa são criados. Para testar a sua tabela externa, utilize uma consulta como o seguinte exemplo de T-SQL para validar o seu trabalho:
SELECT TOP 10 Col1, Col2 FROM <ExternalTableName>;
Se tudo estiver configurado corretamente, deve ser possível ver os dados da sua fonte de dados como resultado desta consulta.
Para saber mais e explorar a sintaxe completa de CREATE EXTERNAL TABLE, veja CRIAR TABELA EXTERNA (Transact-SQL).