Megosztás a következőn keresztül:


PolyBase-lekérdezési forgatókönyvek

A következőkre vonatkozik:Felügyelt Windows Azure SQL-példányon futó SQL Server

Ez a cikk példákat tartalmaz az SQL Server PolyBase funkcióját használó lekérdezésekre (2016-tól kezdve). A példák használata előtt először telepítenie és konfigurálnia kell a PolyBase-t. További információkért tekintse meg a PolyBase áttekintését.

Fontos

Az SQL Server 2022 -ben (16.x) a Hadoophoz tartozó PolyBase külső források nem támogatottak. További információ: PolyBase-összekötők.

Futtassa Transact-SQL utasításokat külső táblákon, vagy használjon BI-eszközöket külső táblák lekérdezéséhez.

Válasszon a külső táblából

Egy egyszerű lekérdezés, amely egy megadott külső táblából ad vissza adatokat.

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

Egy predikátumot tartalmazó egyszerű lekérdezés.

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

JOIN külső táblák helyi táblákkal

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

Adatok importálása

Adatok importálása a Hadoopból vagy az Azure Storage-ból az SQL Serverbe állandó tárolás céljából. A SELECT INTO használatával importálhat egy külső tábla által hivatkozott adatokat az SQL Server állandó tárolóihoz. Hozzon létre egy relációs táblát menet közben, majd hozzon létre egy oszloptároló indexet a tábla tetején egy második lépésben.

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

Adatexportálás

Adatok exportálása AZ SQL Serverről a Hadoopba vagy az Azure Storage-ba.

Először engedélyezze az exportálási funkciót a sp_configure"PolyBase-exportálás engedélyezése" érték 1 értékre állításával. Ezután hozzon létre egy külső táblát, amely a célkönyvtárra mutat. A CREATE EXTERNAL TABLE utasítás létrehozza a célkönyvtárat, ha még nem létezik. Ezután az INSERT INTO használatával exportálhat adatokat egy helyi SQL Server-táblából a külső adatforrásba.

A SELECT utasítás eredményeit a rendszer a megadott fájlformátumban exportálja a megadott helyre. A külső fájlok neve QueryID_date_time_ID.format, ahol az azonosító növekményes azonosító, a formátum pedig az exportált adatformátum. Előfordulhat például, hogy egy fájlnév QID776_20160130_182739_0.orc.

Megjegyzés:

Amikor adatokat exportál a Hadoopba vagy az Azure Blob Storage-ba a PolyBase-en keresztül, csak az adatokat exportálja a rendszer, a CREATE EXTERNAL TABLE parancsban meghatározott oszlopneveket (metaadatokat) nem.

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

Új katalógusnézetek

Az alábbi új katalógusnézetek külső erőforrásokat mutatnak.

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

Annak meghatározása, hogy egy tábla külső tábla-e a következő használatával: is_external

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

Következő lépések

A hibaelhárítással kapcsolatos további információkért lásd a PolyBase hibaelhárítását.