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 2022 (16.x) és újabb verziók
Az SQL Server 2022 (16.x) közvetlenül a deltatábla mappájából tud adatokat lekérdezni. Ez az adatvirtualizálásnak nevezett fogalom lehetővé teszi, hogy az adatok az eredeti helyen maradjanak, de lekérdezhetők egy SQL Server-példányból T-SQL-parancsokkal, mint bármely más tábla. Ez a funkció PolyBase-összekötőket használ, és minimálisra csökkenti az adatok ETL-folyamatokon keresztüli másolásának szükségességét.
Az alábbi példában a deltatábla mappája az Azure Blob Storage-ban lesz tárolva, és az OPENROWSET-en vagy egy külső táblán keresztül érhető el.
Az adatvirtualizálással kapcsolatos további információkért tekintse meg az adatvirtualizálást a PolyBase használatával.
Előre konfigurálás
1. A PolyBase engedélyezése sp_configure
exec sp_configure @configname = 'polybase enabled', @configvalue = 1;
RECONFIGURE;
2. Felhasználói adatbázis létrehozása
Ez a gyakorlat létrehoz egy mintaadatbázist az alapértelmezett beállításokkal és helyekkel. Ezzel az üres mintaadatbázissal dolgozhat az adatokkal, és tárolhatja a hatókörön belüli hitelesítő adatokat. Ebben a példában egy új, üres, névvel ellátott Delta_demo adatbázist használunk.
CREATE DATABASE [Delta_demo];
3. Főkulcs és adatbázis hatókörű hitelesítő adatok létrehozása
A felhasználói adatbázisban lévő adatbázis főkulcsa szükséges az adatbázis hatókörébe tartozó hitelesítőadat-titkos kulcs titkosításához. delta_storage_dsc Ebben a példában a deltatábla az Azure Data Lake Storage Gen2-ben található.
USE [Delta_demo];
CREATE MASTER KEY ENCRYPTION BY PASSWORD = 'password';
CREATE DATABASE SCOPED CREDENTIAL delta_storage_dsc
WITH IDENTITY = 'SHARED ACCESS SIGNATURE',
SECRET = '<SAS Token>';
4. Külső adatforrás létrehozása
Az adatbázis hatókörébe tartozó hitelesítő adatokat a rendszer a külső adatforráshoz használja. Ebben a példában a deltatábla az Azure Data Lake Storage Gen2-ben található, ezért használja az előtagot adls és az SHARED ACCESS SIGNATURE identitásmetódust. Az összekötőkkel és előtagokkal kapcsolatos további információkért, beleértve az SQL Server 2022 új beállításait (16.x), tekintse meg a CREATE EXTERNAL DATA SOURCE (KÜLSŐ ADATFORRÁS LÉTREHOZÁSA) című témakört.
CREATE EXTERNAL DATA SOURCE Delta_ED
WITH (
LOCATION = 'adls://<container>@<storage_account>.dfs.core.windows.net',
CREDENTIAL = delta_storage_dsc
);
Ha például a tárfiók neve el van nevezve delta_lake_sample , és a tároló neve el van nevezve sink, a kód a következő lesz:
CREATE EXTERNAL DATA SOURCE Delta_ED
WITH (
LOCATION = 'adls://sink@delta_lake_sample.dfs.core.windows.net',
CREDENTIAL = delta_storage_dsc
);
Az adatok elérése az OPENROWSET használatával
Ebben a példában az Adattábla mappa neve Contoso.
Mivel a külső adatforrás Delta_ED tárolószintre van leképezve. A Contoso deltatábla mappa egy gyökérben található. Egy mappastruktúrában lévő fájl lekérdezéséhez adjon meg egy mappaleképezést a külső adatforrás LOCATION paraméteréhez képest.
SELECT * FROM OPENROWSET
(
BULK '/Contoso',
FORMAT = 'DELTA',
DATA_SOURCE = 'Delta_ED'
) AS [result];
Adatok lekérdezése külső táblával
A CREATE EXTERNAL TABLE az SQL Serverben a deltatábla adatainak virtualizálására is használható. Az oszlopokat meg kell határozni és szigorúan típusozottnak kell lenniük. Bár a külső táblák létrehozása nagyobb erőfeszítést igényel, a külső adatforrás openROWSET-lel való lekérdezése további előnyöket is biztosít. Ön megteheti:
- Az adott oszlop adatbeviteli definíciójának megerősítése
- Nullability definiálása
- COLLATION definiálása
- Statisztikai adatok létrehozása egy oszlophoz a lekérdezési terv minőségének optimalizálásához
- Részletesebb modell létrehozása az SQL Serveren az adathozzáféréshez a biztonsági modell továbbfejlesztése érdekében
További információ: CREATE EXTERNAL TABLE.
Az alábbi példában ugyanazt az adatforrást használja a rendszer.
1. Külső fájlformátum létrehozása
A fájl formázásának meghatározásához külső fájlformátum szükséges. A külső fájlformátumok is ajánlottak az újrahasználhatóság miatt. További információ: CREATE EXTERNAL FILE FORMAT.
CREATE EXTERNAL FILE FORMAT DeltaTableFormat WITH(FORMAT_TYPE = DELTA);
2. Külső tábla létrehozása
A deltatábla fájljai a következő helyen /delta/Delta_yob/ találhatók, és a példa külső adatforrása az S3-kompatibilis objektumtároló, amely korábban az adatforrás s3_edsalatt van konfigurálva. A PolyBase helyként használhatja a deltatábla mappát vagy magát az abszolút fájlt, amely a következő helyen delta/Delta_yob/_delta_log/00000000000000000000.jsontalálható: .
-- Create External Table using delta
CREATE EXTERNAL TABLE extCall_Center_delta (
id INT,
name VARCHAR(200),
dob DATE
)
WITH (
LOCATION = '/delta/Delta_yob/',
FILE_FORMAT = DeltaTableFormat,
DATA_SOURCE = s3_eds
);
GO
Korlátozások
Ha particionált deltatáblára mutató külső táblát hoz létre, a particionáláshoz használt oszlop a külső tábla lekérdezésekor ad vissza NULL . Ha azonban lekérdezést OPENROWSET használ, az oszlop értéke helyesen lesz visszaadva. A korlátozás megkerüléséhez hozzon létre egy nézetet a OPENROWSET lekérdezésen, majd kérje le a nézetet, hogy a particionált oszlop értékei megfelelően térjenek vissza.
Külső Delta-tábla lekérdezése során a következő hibák léphetnek fel:
Msg 2571, Level 14, State 3, Line 1
User '<user>' does not have permission to run DBCC TRACEON.
Msg 16513, Level 16, State 0, Line 1
Error reading external metadata.
Ez azért fordulhat elő, mert van egy QUERYTRACEON lekérdezési tipp, amely hozzáadható a Delta-fájl metaadat-lekérdezéséhez, és amelyhez kiszolgálói szerepkört kell sysadmin végrehajtani. Ha ez történik, a problémát az 14073 nyomkövetési jelző globális engedélyezésével oldhatja meg, és ez megakadályozza a lekérdezési tipp hozzáadását.