evento
Junte-se a nós na FabCon Vegas
31/03, 23 - 2/04, 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registe-se hoje mesmoEste browser já não é suportado.
Atualize para o Microsoft Edge para tirar partido das mais recentes funcionalidades, atualizações de segurança e de suporte técnico.
Uma tabela externa aponta para dados localizados no Hadoop, no blob de Armazenamento do Azure ou no Armazenamento do Azure Data Lake. Você pode usar tabelas externas para ler dados de arquivos ou gravar dados em arquivos no Armazenamento do Azure.
Com o Synapse SQL, você pode usar tabelas externas para ler dados externos usando pool SQL dedicado ou pool SQL sem servidor.
Dependendo do tipo de fonte de dados externa, você pode usar dois tipos de tabelas externas:
As principais diferenças entre o Hadoop e as tabelas externas nativas:
Tipo de tabela externa | Hadoop | Nativa |
---|---|---|
Conjunto de SQL dedicado | Disponíveis | Apenas mesas de Parquet estão disponíveis em pré-visualização pública. |
Conjunto de SQL sem servidor | Não disponível | Disponíveis |
Formatos suportados | Delimitado/CSV, Parquet, ORC, Hive RC e RC | Pool SQL sem servidor: Delimitado/CSV, Parquet e Delta Lake Pool SQL dedicado: Parquet (visualização) |
Eliminação de partições de pastas | Não | A eliminação de partições está disponível apenas nas tabelas particionadas criadas nos formatos Parquet ou CSV sincronizadas a partir de pools do Apache Spark. Você pode criar tabelas externas em pastas particionadas do Parquet, mas as colunas de particionamento são inacessíveis e ignoradas, enquanto a eliminação de partições não será aplicada. Não crie tabelas externas em pastas Delta Lake porque elas não são suportadas. Use exibições particionadas Delta se precisar consultar dados particionados do Delta Lake. |
Eliminação de ficheiros (pushdown de predicados) | Não | Sim no pool SQL sem servidor. Para o pushdown de cadeia de caracteres, você precisa usar Latin1_General_100_BIN2_UTF8 o agrupamento nas colunas para habilitar o VARCHAR pushdown. Para obter mais informações sobre agrupamentos, consulte Tipos de agrupamento suportados para Synapse SQL. |
Formato personalizado para localização | Não | Sim, usando curingas como /year=*/month=*/day=* para os formatos Parquet ou CSV. Caminhos de pasta personalizados não estão disponíveis no Delta Lake. No pool SQL sem servidor, você também pode usar curingas /logs/** recursivos para fazer referência a arquivos Parquet ou CSV em qualquer subpasta abaixo da pasta referenciada. |
Varredura de pasta recursiva | Sim | Sim. No Serverless, os pools SQL devem ser especificados /** no final do caminho do local. No pool dedicado, as pastas são sempre verificadas recursivamente. |
Autenticação de armazenamento | Chave de acesso de armazenamento (SAK), passagem do Microsoft Entra, identidade gerenciada, identidade personalizada do aplicativo Microsoft Entra | Assinatura de Acesso Compartilhado (SAS), passagem do Microsoft Entra, identidade gerenciada, identidade do aplicativo personalizado Microsoft Entra. |
Mapeamento de colunas | Ordinal - as colunas na definição da tabela externa são mapeadas para as colunas nos arquivos Parquet subjacentes por posição. | Pool sem servidor: por nome. As colunas na definição de tabela externa são mapeadas para as colunas nos arquivos Parquet subjacentes por correspondência de nome de coluna. Piscina dedicada: correspondência ordinal. As colunas na definição da tabela externa são mapeadas para as colunas nos arquivos Parquet subjacentes por posição. |
CETAS (exportação/transformação) | Sim | O CETAS com as tabelas nativas como destino funciona apenas no pool SQL sem servidor. Não é possível usar os pools SQL dedicados para exportar dados usando tabelas nativas. |
Nota
As mesas externas nativas são a solução recomendada nos pools onde estão geralmente disponíveis. Se você precisar acessar dados externos, sempre use as tabelas nativas em pools sem servidor. Em pools dedicados, você deve alternar para as tabelas nativas para ler arquivos do Parquet assim que eles estiverem no GA. Use as tabelas Hadoop somente se precisar acessar alguns tipos que não são suportados em tabelas externas nativas (por exemplo, ORC, RC) ou se a versão nativa não estiver disponível.
Você pode usar tabelas externas para:
Nota
Quando usado em conjunto com a instrução CREATE TABLE AS SELECT , a seleção de uma tabela externa importa dados para uma tabela dentro do pool SQL dedicado .
Se o desempenho das tabelas externas do Hadoop nos pools dedicados não satisfizer suas metas de desempenho, considere carregar dados externos nas tabelas do Datawarehouse usando a instrução COPY.
Para obter um tutorial de carregamento, consulte Usar o PolyBase para carregar dados do Armazenamento de Blobs do Azure.
Você pode criar tabelas externas em pools Synapse SQL através das seguintes etapas:
As tabelas externas nativas em pools Synapse são capazes de ignorar os arquivos colocados nas pastas que não são relevantes para as consultas. Se os seus ficheiros estiverem armazenados numa hierarquia de pastas (por exemplo - /year=2020/month=03/day=16
) e os valores para year
, e day
forem expostos como as colunas, month
as consultas que contêm filtros como year=2020
lerão os ficheiros apenas a partir das subpastas colocadas dentro da year=2020
pasta. Os ficheiros e pastas colocados noutras pastas (year=2021
ou year=2022
) serão ignorados nesta consulta. Esta eliminação é conhecida como eliminação de partição.
A eliminação da partição de pasta está disponível nas tabelas externas nativas que são sincronizadas a partir dos pools Synapse Spark. Se você tiver um conjunto de dados particionado e quiser aproveitar a eliminação de partições com as tabelas externas criadas, use as exibições particionadas em vez das tabelas externas.
Alguns formatos de dados, como Parquet e Delta, contêm estatísticas de arquivo para cada coluna (por exemplo, valores min/max para cada coluna). As consultas que filtram dados não lerão os arquivos onde os valores de coluna necessários não existem. A consulta primeiro explorará valores min/max para as colunas usadas no predicado de consulta para localizar os arquivos que não contêm os dados necessários. Esses arquivos serão ignorados e eliminados do plano de consulta.
Essa técnica também é conhecida como pushdown de predicado de filtro e pode melhorar o desempenho de suas consultas. A pressão de filtro está disponível nos pools SQL sem servidor nos formatos Parquet e Delta. Para aproveitar a pressão de filtro para os tipos de cadeia de caracteres, use o tipo VARCHAR com o Latin1_General_100_BIN2_UTF8
agrupamento. Para obter mais informações sobre agrupamentos, consulte Tipos de agrupamento suportados para Synapse SQL.
O usuário deve ter SELECT
permissão em uma tabela externa para ler os dados.
As tabelas externas acessam o armazenamento subjacente do Azure usando a credencial de escopo do banco de dados definida na fonte de dados usando as seguintes regras:
O exemplo a seguir cria uma fonte de dados externa do Hadoop no pool SQL dedicado para o Azure Data Lake Gen2 apontando para o conjunto de dados de Nova York:
CREATE DATABASE SCOPED CREDENTIAL [ADLS_credential]
WITH IDENTITY='SHARED ACCESS SIGNATURE',
SECRET = 'sv=2018-03-28&ss=bf&srt=sco&sp=rl&st=2019-10-14T12%3A10%3A25Z&se=2061-12-31T12%3A10%3A00Z&sig=KlSU2ullCscyTS0An0nozEpo4tO5JAgGBvw%2FJX2lguw%3D'
GO
CREATE EXTERNAL DATA SOURCE AzureDataLakeStore
WITH
-- Please note the abfss endpoint when your account has secure transfer enabled
( LOCATION = 'abfss://data@newyorktaxidataset.dfs.core.windows.net' ,
CREDENTIAL = ADLS_credential ,
TYPE = HADOOP
) ;
O exemplo a seguir cria uma fonte de dados externa para o Azure Data Lake Gen2 apontando para o conjunto de dados de Nova York disponível publicamente:
CREATE EXTERNAL DATA SOURCE YellowTaxi
WITH ( LOCATION = 'https://azureopendatastorage.blob.core.windows.net/nyctlc/yellow/',
TYPE = HADOOP)
O exemplo a seguir cria um formato de arquivo externo para arquivos de censo:
CREATE EXTERNAL FILE FORMAT census_file_format
WITH
(
FORMAT_TYPE = PARQUET,
DATA_COMPRESSION = 'org.apache.hadoop.io.compress.SnappyCodec'
)
O exemplo a seguir cria uma tabela externa. Ele retorna a primeira linha:
CREATE EXTERNAL TABLE census_external_table
(
decennialTime varchar(20),
stateName varchar(100),
countyName varchar(100),
population int,
race varchar(50),
sex varchar(10),
minAge int,
maxAge int
)
WITH (
LOCATION = '/parquet/',
DATA_SOURCE = population_ds,
FILE_FORMAT = census_file_format
)
GO
SELECT TOP 1 * FROM census_external_table
Usando os recursos de exploração do Data Lake do Synapse Studio, agora você pode criar e consultar uma tabela externa usando o pool Synapse SQL com um simples clique com o botão direito do mouse no arquivo. O gesto de um clique para criar tabelas externas a partir da conta de armazenamento ADLS Gen2 só é suportado para ficheiros Parquet.
Você deve ter acesso ao espaço de trabalho com pelo menos a Storage Blob Data Contributor
função de acesso à conta ADLS Gen2 ou às Listas de Controle de Acesso (ACL) que permitem consultar os arquivos.
Você deve ter pelo menos permissões para criar uma tabela externa e consultar tabelas externas no pool SQL Synapse (dedicado ou sem servidor).
No painel Dados, selecione o arquivo a partir do qual deseja criar a tabela externa:
Abre-se uma janela de diálogo. Selecione pool SQL dedicado ou pool SQL sem servidor, dê um nome à tabela e selecione script aberto:
O Script SQL é gerado automaticamente inferindo o esquema do arquivo:
Execute o script. O script executará automaticamente um Select Top 100 *.:
A tabela externa agora é criada, para exploração futura do conteúdo dessa tabela externa, o usuário pode consultá-la diretamente do painel Dados:
Consulte o artigo CETAS para saber como salvar os resultados da consulta em uma tabela externa no Armazenamento do Azure. Ou você pode começar a consultar tabelas externas do Apache Spark for Azure Synapse.
evento
Junte-se a nós na FabCon Vegas
31/03, 23 - 2/04, 23
O melhor evento liderado pela comunidade Microsoft Fabric, Power BI, SQL e AI. 31 de março a 2 de abril de 2025.
Registe-se hoje mesmo