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.
Aplica-se a:SQL Server no Windows
Azure SQL Managed Instance
Este artigo fornece exemplos de consultas que utilizam a funcionalidade PolyBase do SQL Server (a partir de 2016). Antes de usar estes exemplos, deve primeiro instalar e configurar o PolyBase. Para mais informações, consulte a visão geral do PolyBase.
Importante
No SQL Server 2022 (16.x), as fontes externas do PolyBase para Hadoop não são suportadas. Para mais informações, consulte conectores PolyBase.
Executa Transact-SQL instruções contra tabelas externas ou usa ferramentas de BI para consultar tabelas externas.
SELECT da tabela externa
Uma consulta simples que devolve dados de uma tabela externa definida.
SELECT TOP 10 * FROM [dbo].[SensorData];
Uma consulta simples que inclui um predicado.
SELECT * FROM [dbo].[SensorData]
WHERE Speed > 65;
JUNTAR tabelas externas com tabelas locais
SELECT InsuranceCustomers.FirstName,
InsuranceCustomers.LastName,
SensorData.Speed
FROM InsuranceCustomers INNER JOIN SensorData
ON InsuranceCustomers.CustomerKey = SensorData.CustomerKey
WHERE SensorData.Speed > 65
ORDER BY SensorData.Speed DESC
Importar dados
Importe dados do Hadoop ou do Armazenamento do Azure para o SQL Server para armazenamento persistente. Use SELECT INTO para importar dados referenciados por uma tabela externa, para armazenamento persistente no SQL Server. Crie uma tabela relacional em tempo real e depois crie um índice de armazenamento de colunas por cima da tabela numa segunda etapa.
-- PolyBase scenario - import external data into SQL Server
-- Import data for fast drivers into SQL Server to do more in-depth analysis
-- Leverage columnstore technology
SELECT DISTINCT
Insured_Customers.FirstName, Insured_Customers.LastName,
Insured_Customers.YearlyIncome, Insured_Customers.MaritalStatus
INTO Fast_Customers from Insured_Customers INNER JOIN
(
SELECT * FROM CarSensor_Data where Speed > 35
) AS SensorD
ON Insured_Customers.CustomerKey = SensorD.CustomerKey
ORDER BY YearlyIncome
CREATE CLUSTERED COLUMNSTORE INDEX CCI_FastCustomers ON Fast_Customers;
Exportar Dados
Exporte dados do SQL Server para o Hadoop ou o Armazenamento do Azure.
Primeiro, ative a funcionalidade de exportação definindo o sp_configure valor de 'permitir exportação da polybase' como 1. De seguida, crie uma tabela externa que aponte para o diretório de destino. A instrução CREATE EXTERNAL TABLE cria o diretório de destino, caso este ainda não exista. Depois, use INSERT INTO para exportar dados de uma tabela SQL Server local para a fonte de dados externa.
Os resultados da instrução SELECT são exportados para a localização especificada no formato de ficheiro especificado. Os ficheiros externos são chamados QueryID_date_time_ID.format, onde ID é um identificador incremental e o formato é o formato de dados exportados. Por exemplo, um nome de ficheiro pode ser QID776_20160130_182739_0.orc.
Observação
Ao exportar dados para Hadoop ou Armazenamento de Blobs do Azure via PolyBase, somente os dados são exportados, não os nomes de coluna (metadados), conforme definido no comando CREATE EXTERNAL TABLE.
-- PolyBase scenario - export data from SQL Server to Hadoop
-- Create an external table
CREATE EXTERNAL TABLE [dbo].[FastCustomers2009] (
[FirstName] char(25) NOT NULL,
[LastName] char(25) NOT NULL,
[YearlyIncome] float NULL,
[MaritalStatus] char(1) NOT NULL
)
WITH (
LOCATION='/old_data/2009/customerdata',
DATA_SOURCE = HadoopHDP2,
FILE_FORMAT = TextFileFormat,
REJECT_TYPE = VALUE,
REJECT_VALUE = 0
);
-- Export data: Move old data to Hadoop while keeping it query-able via an external table.
INSERT INTO dbo.FastCustomers2009
SELECT T.* FROM Insured_Customers T1 JOIN CarSensor_Data T2
ON (T1.CustomerKey = T2.CustomerKey)
WHERE T2.YearMeasured = 2009 and T2.Speed > 40;
Novas visualizações de catálogo
As seguintes novas visualizações de catálogo mostram recursos externos.
SELECT * FROM sys.external_data_sources;
SELECT * FROM sys.external_file_formats;
SELECT * FROM sys.external_tables;
Determine se uma tabela é uma tabela externa usando is_external
SELECT name, type, is_external FROM sys.tables WHERE name='myTableName'
Próximos passos
Para saber mais sobre resolução de problemas, consulte PolyBase troubleshooting.