Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
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.