Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:SQL Server
Tento článek popisuje možnosti použití PolyBase k dotazování externích dat na místě, označovaných jako virtualizace dat, pro různé externí zdroje dat.
Syntaxe T-SQL použitá v PolyBase
Pokud chcete použít PolyBase, musíte vytvořit externí tabulky, které budou odkazovat na externí data. Přečtěte si:
- Vytvořit přihlašovací údaje k databázi (Transact-SQL)
- VYTVOŘIT EXTERNÍ ZDROJ DAT (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- VYTVOŘIT EXTERNÍ TABULKU (Transact-SQL)
- VYTVOŘIT STATISTIKY (Transact-SQL)
Poznámka:
Abyste mohli používat PolyBase, musíte mít oprávnění na úrovni sysadmin nebo CONTROL SERVER pro databázi.
Tutorials
Příklady dotazů najdete v tématu Dotazy PolyBase.
Další kurzy o různých externích zdrojích dat najdete v následujících kurzech:
- Hadoop
- Azure Blob Storage
- SQL Server
- Oracle
- Teradata
- MongoDB
- Obecné typy ODBC
- Úložiště objektů kompatibilní s S3
- CSV
- Tabulka Delta
Funkce metadat souborů
Někdy je potřeba vědět, který zdroj souboru nebo složky koreluje s konkrétním řádkem ve výsledné sadě.
Můžete použít funkce filepath a filename k vrácení jmen souborů a/nebo cesty ve výsledné sadě. Nebo je můžete použít k filtrování dat podle názvu souboru a/nebo cesty k složce. V následujících sekcích najdete krátké popisy spolu se ukázkami.
Funkce názvu souboru
Tato funkce vrací název souboru, ze kterého řádek pochází.
Datový typ návratu je nvarchar(1024). Pro optimální výkon vždy přenášejte výsledek funkce názvu souboru na příslušný datový typ. Pokud použijete datový typ znaků, ujistěte se, že je použita vhodná délka.
Následující vzorek čte datové soubory NYC Yellow Taxi za poslední tři měsíce roku 2017 a vrací počet jízd v jednom souboru. Část OPENROWSET dotazu specifikuje, které soubory budou čteny.
SELECT
nyc.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM
OPENROWSET(
BULK 'parquet/taxi/year=2017/month=9/*.parquet',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT='PARQUET'
) nyc
GROUP BY nyc.filename();
Následující příklad ukazuje, jak filename() lze v klauzuli WHERE použít k filtrování souborů, které mají být čteny. Přistupuje k celé složce v OPENROWSET části dotazu a filtruje soubory v dané klauzuli WHERE .
Vaše výsledky budou stejné jako v předchozím příkladu.
SELECT
r.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_2017-*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2)
WITH (C1 varchar(200) ) AS [r]
WHERE
r.filename() IN ('yellow_tripdata_2017-10.csv', 'yellow_tripdata_2017-11.csv', 'yellow_tripdata_2017-12.csv')
GROUP BY
r.filename()
ORDER BY
[filename];
Funkce cesty k souboru
Tato funkce vrací celou cestu nebo část cesty:
- Při volání bez parametru vrací celou cestu k souboru, ze které řádek pochází.
- Při volání parametrem vrací část cesty, která odpovídá divoké kartě na pozici uvedené v parametru. Například hodnota parametru 1 by vrátila část cesty, která odpovídá první divoké kartě.
Datový typ návratové hodnoty je nvarchar(1024). Pro optimální výkon vždy přenášejte výsledek filepath funkce na příslušný datový typ. Pokud použijete datový typ znakový, ujistěte se, že je použita vhodná délka.
Následující vzorek obsahuje datové soubory NYC Yellow Taxi za poslední tři měsíce roku 2017. Vrací počet jízd na cestu souboru. Část OPENROWSET dotazu specifikuje, které soubory budou čteny.
SELECT
r.filepath() AS filepath
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_2017-1*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2
)
WITH (
vendor_id INT
) AS [r]
GROUP BY
r.filepath()
ORDER BY
filepath;
Následující příklad ukazuje, jak filepath() lze v klauzuli WHERE použít k filtrování souborů, které mají být čteny.
Můžete použít divoké karty v OPENROWSET části dotazu a filtrovat soubory v klauzuli WHERE . Vaše výsledky budou stejné jako v předchozím příkladu.
SELECT
r.filepath() AS filepath
,r.filepath(1) AS [year]
,r.filepath(2) AS [month]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_*-*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2
)
WITH (
vendor_id INT
) AS [r]
WHERE
r.filepath(1) IN ('2017')
AND r.filepath(2) IN ('10', '11', '12')
GROUP BY
r.filepath()
,r.filepath(1)
,r.filepath(2)
ORDER BY
filepath;
Související obsah
- virtualizace dat pomocí PolyBase v SQL Serveru
- Začínáme s PolyBase v SQL Serveru 2022
- Aspekty výkonu v PolyBase pro SQL Server