Aracılığıyla paylaş


PolyBase sorgu senaryoları

Şunlar için geçerlidir:Windows Azure SQL Yönetilen Örneği üzerinde SQLServer

Bu makalede, SQL Server'ın PolyBase özelliğini (2016'dan başlayarak) kullanan sorgu örnekleri sağlanır. Bu örnekleri kullanmadan önce PolyBase'i yüklemeniz ve yapılandırmanız gerekir. Daha fazla bilgi için bkz. PolyBase'e genel bakış.

Önemli

SQL Server 2022'de (16.x), Hadoop'a PolyBase dış kaynakları desteklenmez. Daha fazla bilgi için bkz . PolyBase bağlayıcıları.

Dış tablolarda Transact-SQL deyimlerini çalıştırın veya dış tabloları sorgulamak için BI araçlarını kullanın.

Dış tablodan SELECT işlemi yapın

Tanımlı bir dış tablodan veri döndüren basit bir sorgu.

SELECT TOP 10 * FROM [dbo].[SensorData];

Koşul içeren basit bir sorgu.

SELECT * FROM [dbo].[SensorData]
WHERE Speed > 65;

Yerel tablolarla dış tabloları JOIN etme

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

Verileri içeri aktarma

Kalıcı depolama için Hadoop veya Azure Depolama'dan SQL Server'a veri aktar. SQL Server'da kalıcı depolama için dış tablo tarafından başvuruda bulunılan verileri içeri aktarmak için SELECT INTO kullanın. Anında bir ilişkisel tablo oluşturun ve ardından ikinci adımda tablonun üstünde bir sütun deposu dizini oluşturun.

-- 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;

Verileri dışarı aktarma

VERILERI SQL Server'dan Hadoop'a veya Azure Depolama'ya aktarın.

İlk olarak, sp_configure değerini 1 olarak ayarlayarak dışa aktarma işlevini etkinleştirin. Ardından hedef dizine işaret eden bir dış tablo oluşturun. CREATE EXTERNAL TABLE deyimi, henüz yoksa hedef dizini oluşturur. Ardından, yerel bir SQL Server tablosundaki verileri dış veri kaynağına aktarmak için INSERT INTO kullanın.

SELECT deyiminin sonuçları belirtilen dosya biçiminde belirtilen konuma aktarılır. Dış dosyalar QueryID_date_time_ID.format olarak adlandırılır; burada kimlik artımlı tanımlayıcıdır ve biçim dışarı aktarılan veri biçimidir. Örneğin, bir dosya adı QID776_20160130_182739_0.orc olabilir.

Uyarı

Verileri PolyBase aracılığıyla Hadoop veya Azure Blob Depolama'ya aktarırken, CREATE EXTERNAL TABLE komutunda tanımlanan sütun adları (meta veriler) değil, yalnızca veriler dışarı aktarılır.

-- 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;

Yeni katalog görünümleri

Aşağıdaki yeni katalog görünümleri dış kaynakları gösterir.

SELECT * FROM sys.external_data_sources;
SELECT * FROM sys.external_file_formats;
SELECT * FROM sys.external_tables;

kullanarak tablonun dış tablo olup olmadığını belirleme is_external

SELECT name, type, is_external FROM sys.tables WHERE name='myTableName'

Sonraki Adımlar

Sorun giderme hakkında daha fazla bilgi edinmek için bkz. PolyBase sorun giderme.