Exercício – Usar o PolyBase para consultar um arquivo Parquet
Neste exercício, você:
- Instale e habilite o PolyBase.
- Crie um banco de dados.
- Crie uma chave mestra de banco de dados para proteger a credencial no escopo do banco de dados.
- Crie uma credencial com escopo de banco de dados para acessar a fonte de dados.
- Crie a fonte de dados.
- Consultar e manipular dados armazenados na fonte de dados pública.
- Crie um formato de arquivo externo e uma tabela externa.
Instalar o PolyBase
Observação
No SQL Server 2025, a instalação do recurso Serviço de Consulta do PolyBase para Dados Externos não é necessária para consultar arquivos Parquet, Delta ou CSV em Armazenamento de Blobs do Azure, Azure Data Lake Storage ou armazenamento de objetos compatíveis com S3. Esses recursos são nativos do mecanismo SQL Server 2025. As etapas de instalação e habilitação nesta seção só serão necessárias se você também precisar se conectar a fontes RDBMS (SQL Server, Oracle, Teradata, MongoDB, ODBC).
Você pode instalar o PolyBase com o executável de instalação do SQL Server durante a instalação inicial, ou adicioná-lo como uma funcionalidade posteriormente. Na página Seleção de Recursos do SQL Server setup.exe, selecione o Serviço de Consulta do PolyBase para Dados Externos.
Observação
O intervalo de portas 16450-16460 mostrado anteriormente SQL Server telas de instalação aplicadas somente a grupos de expansão do PolyBase, que foram desativados no SQL Server 2022 e não estão disponíveis no SQL Server 2025. SQL Server 2025 executa o PolyBase como um recurso de expansão (nó único). Nenhuma porta de firewall adicional é necessária somente para acesso a dados externos do PolyBase.
A instalação do PolyBase instala dois serviços do PolyBase, o Mecanismo PolyBase do SQL Server e a Movimentação de Dados do PolyBase do SQL Server. Para obter informações completas e pré-requisitos para a instalação do PolyBase, consulte:
- Instalar o PolyBase no Windows
- Instalar o PolyBase no Linux
Ativar PolyBase
Depois de instalar o serviço, conecte-se à instância do SQL Server 2025 no SQL Server Management Studio (SSMS) e execute o comando a seguir para habilitar o PolyBase.
EXEC SP_CONFIGURE @CONFIGNAME = N'POLYBASE ENABLED', @CONFIGVALUE = 1;
RECONFIGURE;
Observação
No SQL Server 2025, você não precisa instalar ou habilitar o PolyBase para consultar arquivos Parquet de Armazenamento de Blobs do Azure— esses recursos são nativos do mecanismo SQL Server 2025. Se você ignorou as etapas de instalação e habilitação acima, poderá prosseguir diretamente para a criação do banco de dados. As etapas Instalar e Habilitar só se aplicam quando você também precisa de conectividade RDBMS (SQL Server, Oracle, Teradata, MongoDB, ODBC).
Criar um banco de dados
Execute o comando a seguir no SSMS para criar um banco de dados para este exercício chamado Demo1. Se o banco de dados já tiver sido criado, o script o removerá e o recriará.
USE MASTER;
IF EXISTS (SELECT * FROM sys.databases WHERE [name] = N'Demo1')
BEGIN
ALTER DATABASE Demo1 SET SINGLE_USER WITH ROLLBACK IMMEDIATE
DROP DATABASE IF EXISTS Demo1
END;
CREATE DATABASE Demo1;
USE Demo1;
Criar a chave mestra do banco de dados
Você deve criar uma chave mestra de banco de dados para garantir a segurança das credenciais limitadas ao escopo do banco de dados. O exemplo a seguir cria a chave com uma senha gerada aleatoriamente e um backup é necessário.
DECLARE @randomWord VARCHAR(64) = NEWID();
DECLARE @createMasterKey NVARCHAR(500) = N'
IF NOT EXISTS (SELECT * FROM sys.symmetric_keys WHERE name = ''##MS_DatabaseMasterKey##'')
CREATE MASTER KEY ENCRYPTION BY PASSWORD = ' + QUOTENAME(@randomWord, '''')
EXECUTE sp_executesql @createMasterKey;
SELECT * FROM sys.symmetric_keys;
Para entender melhor e manter chaves de criptografia em um ambiente de produção, confira:
Criar a credencial no escopo do banco de dados
A credencial com escopo de banco de dados é responsável por armazenar as credenciais que a fonte de dados usa para se conectar ao ponto de extremidade. Esse exemplo usa um ponto de extremidade público, portanto a credencial não precisa de um segredo.
IF EXISTS (SELECT * FROM sys.database_scoped_credentials WHERE name = N'PublicCredential')
DROP DATABASE SCOPED CREDENTIAL PublicCredential;
CREATE DATABASE SCOPED CREDENTIAL PublicCredential
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<KEY>'; -- This example doesn't need the SECRET because the data source is public
Criar a fonte de dados
Este exemplo usa um conjunto de dados COVID Parquet publicamente disponível armazenado no Armazenamento de Blobs do Azure. Use o escopo do banco de dados PublicCredential que você criou para estabelecer a conexão.
Valores DE LOCALIZAÇÃO:
- Prefixo:
abs - Conta de Armazenamento do Azure:
pandemicdatalake - Caminho completo da conta de Armazenamento do Azure:
pandemicdatalake.blob.core.windows.net - Nome do contêiner:
public - Caminho completo do contêiner:
public/curated/covid-19/bing_covid-19_data/latest
IF EXISTS (SELECT * FROM sys.external_data_sources WHERE name = N'Public_Covid') DROP EXTERNAL DATA SOURCE Public_Covid;
CREATE EXTERNAL DATA SOURCE Public_Covid
WITH (
LOCATION = 'abs://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest',
CREDENTIAL = [PublicCredential]
);
- Para obter uma lista completa de fontes de dados e prefixos correspondentes, consulte CREATE EXTERNAL DATA SOURCE.
- Para obter mais informações sobre o conjunto de dados público, consulte O COVID-19 do Bing.
Consultar os dados com OPENROWSET
Você pode usar OPENROWSET para acessar e explorar os dados. OPENROWSET é otimizado para cenários de exploração de dados e carga de trabalho ad hoc.
Valores OPENROWSET:
- BULK: nome do arquivo e extensão. BULK acrescenta automaticamente às informações da fonte de dados, de modo que o local completo do arquivo é
abs://pandemicdatalake.blob.core.windows.net/public/curated/covid-19/bing_covid-19_data/latest/bing_covid-19_data.parquet - FORMATO:
PARQUET - DATA_SOURCE: Informações de conexão, nesse caso, sua nova fonte de dados
Public_Covid
SELECT TOP 1000 *
FROM OPENROWSET
(BULK 'bing_covid-19_data.parquet'
, FORMAT = 'PARQUET'
, DATA_SOURCE = 'Public_Covid')
AS [COVID_Dataset]
O exemplo a seguir usa flexibilidade T-SQL para consultar o arquivo Parquet em tempo real, assim como uma tabela regular. Para retornar o número de casos confirmados por estado dos EUA em ordem decrescente, execute a seguinte consulta:
SELECT [COVID_Dataset].admin_region_1,
SUM(CAST([COVID_Dataset].confirmed AS BIGINT)) AS Confirmed
FROM OPENROWSET
(BULK 'bing_covid-19_data.parquet'
, FORMAT = 'PARQUET'
, DATA_SOURCE = 'Public_Covid')
AS [COVID_Dataset]
WHERE [COVID_Dataset].country_region = 'United States' AND
[COVID_Dataset].admin_region_1 IS NOT NULL
GROUP BY [COVID_Dataset].admin_region_1
ORDER BY confirmed DESC
Criar e consultar uma tabela externa
OPENROWSET é otimizado para execução ad hoc e exploração de dados. Tabelas externas são mais adequadas para acesso recorrente, pois também podem usar estatísticas.
Descubra o esquema da tabela externa
Para criar uma tabela externa, primeiro determine as colunas e o tipo. O esquema vem de um arquivo externo, portanto, pode ser demorado determinar com precisão os tipos de dados e intervalos. Felizmente, você pode usar o procedimento armazenado sp_describe_first_result_set (Transact-SQL) para acelerar esse processo.
DECLARE @tsql NVARCHAR(MAX) = 'SELECT TOP 1000 *
FROM OPENROWSET
(BULK ''bing_covid-19_data.parquet''
, FORMAT = ''PARQUET''
, DATA_SOURCE = ''Public_Covid'')
AS [COVID_Dataset]';
EXEC sys.sp_describe_first_result_set @tsql;
Você pode ver que sp_describe_first_result_set retornou os nomes de coluna, tipos, comprimento, precisão e até mesmo a ordenação da fonte de dados.
Criar o formato de arquivo externo
Como você precisa referenciar o arquivo Parquet à tabela externa, primeiro você precisa executar CREATE EXTERNAL FILE FORMAT para adicionar o formato de arquivo Parquet. A definição de formato de arquivo é importante para tabelas externas porque especifica o layout real e o tipo de compactação.
Execute o comando a seguir:
IF EXISTS (SELECT * FROM sys.external_file_formats WHERE name = N'ParquetFileFormat')
DROP EXTERNAL FILE FORMAT ParquetFileFormat;
CREATE EXTERNAL FILE FORMAT ParquetFileFormat WITH(FORMAT_TYPE = PARQUET);
Criar a tabela externa
Por fim, com todas as informações que você acabou de adquirir e o formato de arquivo externo criado, você pode criar a tabela externa usando o seguinte script:
IF EXISTS (SELECT * FROM sys.external_file_formats WHERE name = N'ParquetFileFormat')
DROP EXTERNAL FILE FORMAT ParquetFileFormat;
CREATE EXTERNAL FILE FORMAT ParquetFileFormat WITH(FORMAT_TYPE = PARQUET);
-- 8.3 CREATE EXTERNAL TABLE
IF OBJECT_ID(N'ext_covid_data', N'ET') IS NOT NULL
DROP EXTERNAL TABLE ext_covid_data;
CREATE EXTERNAL TABLE ext_covid_data
(
id int,
updated date,
confirmed int,
confirmed_change int,
deaths int,
deaths_change smallint,
recovered int,
recovered_change int,
latitude float,
longitude float,
iso2 varchar(8000),
iso3 varchar(8000),
country_region varchar(8000),
admin_region_1 varchar(8000),
iso_subdivision varchar(8000),
admin_region_2 varchar(8000),
load_time datetime2(7)
)
WITH
(
LOCATION = 'bing_covid-19_data.parquet'
, FILE_FORMAT = ParquetFileFormat
, DATA_SOURCE = Public_Covid
);
CREATE STATISTICS [Stats_ext_covid_data_updated] ON ext_covid_data([updated]);
SELECT TOP 1000 * FROM ext_covid_data;
Observação
Os nomes de coluna devem corresponder às colunas armazenadas no arquivo Parquet ou o SQL Server não pode identificar as colunas e retornar NULL.
Depois de criar a tabela ext_covid_dataexterna, você pode adicionar estatísticas nas colunas atualizadas para eficiência. Para obter mais informações sobre estatísticas na tabela externa, consulte CREATE STATISTICS (Transact-SQL).
Nesta unidade, você usou o PolyBase para se conectar a uma fonte de dados externa e usou OPENROWSET ou tabela externa para consultar o arquivo Parquet. No próximo exercício, você usará os serviços do PolyBase para se conectar e criar uma tabela externa de um banco de dados no Banco de Dados SQL do Azure.