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:SQL Server
Ez a cikk áttekinti a PolyBase használatával a külső adatok helyben történő lekérdezésének lehetőségeit, más néven adatvirtualizálást számos külső adatforrás esetében.
A PolyBase-ben használt T-SQL-szintaxis
A PolyBase használatához külső táblákat kell létrehoznia a külső adatokra való hivatkozáshoz. Hivatkozzon:
- HOZZON LÉTRE ADATBÁZIS HATÓKÖRŰ HITELTAGOT (Transact-SQL)
- KÜLSŐ ADATFORRÁS LÉTREHOZÁSA (Transact-SQL)
- KÜLSŐ FÁJLFORMÁTUM LÉTREHOZÁSA (Transact-SQL)
- HOZZON LÉTRE KÜLSŐ TÁBLÁT (Transact-SQL)
- Statok létrehozása (Transact-SQL)
Megjegyzés:
A PolyBase használatához sysadmin vagy CONTROL SERVER szintű engedélyekkel kell rendelkeznie az adatbázisban.
Oktatóanyagok
Példák a lekérdezésekre: PolyBase-lekérdezések.
További oktatóanyagok a különböző külső adatforrásokról:
- Hadoop
- Azure Blob-tároló
- SQL Server
- Oracle
- Teradata
- MongoDB
- ÁLTALÁNOS ODBC-típusok
- S3-kompatibilis objektumtároló
- CSV
- Delta tábla
Fájl metaadat-függvényei
Néha tudni kell, melyik fájl vagy mappa forrása kapcsolódik egy adott sorhoz az eredményhalmazban.
Az filepath és filename függvények használhatók fájlnevek és/vagy az útvonal visszaadására az eredményhalmazban. Vagy használhatod őket arra, hogy az adatokat a fájl neve és/vagy a mappa útvonala alapján szűrj. A következő részekben rövid leírásokat találsz a minták mellett.
Fájlnév funkció
Ez a függvény visszaadja azt a fájlnevet, amelyből a sor származik.
A visszaadó adattípus: nvarchar(1024). Az optimális teljesítmény érdekében mindig a fájlnévfüggvény eredményét a megfelelő adattípusra cseréljük. Ha karakteradattípust használsz, győződj meg róla, hogy megfelelő hosszúságot használsz.
A következő minta a NYC Yellow Taxi adatait olvassa 2017 utolsó három hónapjára, és visszaadja a fuvarozások számát fájlonként. A OPENROWSET lekérdezés része megadja, mely fájlokat fogják olvasni.
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();
Az alábbi példa bemutatja, hogyan filename() lehet a WHERE záradékban felhasználni az olvasandó fájlok szűrésére. Hozzáfér a lekérdezés teljes mappájához a OPENROWSET részben, és szűri a fájlokat a WHERE záradékban.
Az eredményeid ugyanazok lesznek, mint az előző példán.
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];
Fájlút függvény
Ez a függvény teljes utat vagy az út egy részét ad vissza:
- Ha paraméter nélkül hívják, visszaadja a teljes fájlútot, amelyből egy sor indul.
- Ha paraméterrel hívják meg, az útvonal azon részét adja vissza, amely megfelel a paraméterben megadott pozícióban lévő helyettesítő karakternek. Például az 1-es paraméterérték visszaadja az út azon részét, amely megegyezik az első helyettesítő karakterrel.
A visszaadó adattípus: nvarchar(1024). Az optimális teljesítmény érdekében mindig filepath függvény eredményét a megfelelő adattípusra kell konvertálni. Ha karakteradattípust használsz, győződj meg róla, hogy megfelelő hosszúságot használsz.
A következő minta a NYC Yellow Taxi adatfájljait olvassa 2017 utolsó három hónapjában. Visszaadja a fájlútonként a fuvarok számát. A OPENROWSET lekérdezés része megadja, mely fájlokat fogják olvasni.
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;
Az alábbi példa bemutatja, hogyan filepath() lehet a WHERE záradékban felhasználni az olvasandó fájlok szűrésére.
Használhatod a wildcardokat a OPENROWSET lekérdezés részében, és szűrheted a fájlokat a WHERE záradékban. Az eredményeid ugyanazok lesznek, mint az előző példán.
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;