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


Adatvirtualizálás (előzetes verzió)

A következőre vonatkozik: SQL-adatbázis a Microsoft Fabricben

Fontos

Ez a funkció előzetes verzióban érhető el.

Az SQL Database in Fabric adatvirtualizálása lehetővé teszi a OneLake-ben tárolt külső adatok lekérdezését A T-SQL használatával.

Adatvirtualizálási szintaxissal Transact-SQL (T-SQL) lekérdezéseket hajthat végre olyan fájlokon, amelyek a OneLake-ben gyakran használt adatformátumokban tárolják az adatokat. Ezeket az adatokat összekapcsolásokkal kombinálhatja helyileg tárolt relációs adatokkal. Az adatvirtualizálással átláthatóan és írásvédett módban férhet hozzá a külső adatokhoz, miközben azok az eredeti formátumukban és helyükön maradnak.

Szemantika

A Fabric SQL Database a következő adatvirtualizálási képességeket támogatja:

Authentication

A Fabric Lakehouses hitelesítése Microsoft Entra-azonosító átengedési hitelesítést használ.

A fájlok Fabric OneLake-ből való eléréséhez a felhasználó identitásának engedéllyel kell rendelkeznie a Lakehouse-hoz és a fájlhelyhez is.

Permissions

A felhasználóknak olvasási hozzáféréssel kell rendelkezniük a OneLake fájlokhoz vagy mappákhoz, amit a Microsoft Entra ID átengedése biztosít.

Támogatott fájltípusok

  • Parquet
  • CSV
  • A JSON-fájlformátum közvetetten támogatott a CSV fájlformátum megadásával, ahol a lekérdezések minden dokumentumot külön sorként adnak vissza. A sorokat JSON_VALUE ésOPENJSON használatával elemezheti tovább.

Támogatott adatforrások

Jelenleg csak a Fabric Lakehouse támogatott natív módon. A OneLake-parancsikonok azonban különböző külső forrásokra is kiterjedhetnek, például az Azure Blob Storage-ra, az Azure Data Lake Gen2-re, a Dataverse-ra, az Amazon S3-ra, az Amazon S3-kompatibilisre, a Google Cloud Storage-ra, a nyilvános HTTPS-ra stb.

A Fabric parancsikonjaival kapcsolatos további információkért lásd: Adatforrások egyesítése OneLake parancsikonokkal.

A lakehouse ABFSS-fájljának helyének megkeresése

Fabric Lakehouse adatforrás létrehozásához meg kell adnia a munkaterület azonosítóját, a bérlőt és a Lakehouse ID-t. Egy tóház ABFSS-fájlhelyének megkeresése:

  1. Nyissa meg a Fabric portált.
  2. Lépjen a Lakehouse-hoz.
  3. Lépjen a kívánt mappahelyre.
  4. Válassza ki ..., majd a Tulajdonságok opciót.
  5. Másold ki az ABFS útvonalat, ami valami ilyesmiben néz ki: abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/.

Korlátozások

  • A KÜLSŐ CSV-táblákat séma-minősített nevek használatával kell lekérdezni, például dbo.Customer_CSV.
  • BULK INSERT jelenleg csak akkor támogatott, ha együtt használják a következővel OPENROWSET (BULK): .

Példák

Ezek a példaszkriptek egy Cold_Lake nevű Fabric Lakehouse-t használnak, amely a Contoso üzlet és ügyféladatait tárolja parquet- és csv-fájlokban.

Képernyőkép a Cold _ Lake nevű mintapéldány Lakehouse-ról.

A. Parquet-fájl lekérdezése OPENROWSET használatával

Az alábbi példa bemutatja a mintaadatok parquet-fájlból való lekérésének OPENROWSET használatát.

SELECT TOP 100 *  
FROM OPENROWSET(  
    BULK 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/Contoso/customer.parquet',  
    FORMAT = 'parquet'  
) AS customer_dataset;  

B. CSV-fájl lekérdezése OPENROWSET használatával

Az alábbi példa bemutatja a mintaadatok CSV-fájlból való lekérésének OPENROWSET használatát.

SELECT *  
FROM OPENROWSET(  
    BULK 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/Contoso/customer.csv',  
    FORMAT = 'CSV',  
    FIRST_ROW = 2  
) WITH (  
    CustomerKey INT,  
    GeoAreaKey INT,  
    StartDT DATETIME2,  
    EndDT DATETIME2,  
    Continent NVARCHAR(50),  
    Gender NVARCHAR(10),  
    Title NVARCHAR(10),  
    GivenName NVARCHAR(100),  
    MiddleInitial VARCHAR(2),  
    Surname NVARCHAR(100),  
    StreetAddress NVARCHAR(200),  
    City NVARCHAR(100),  
    State NVARCHAR(100),  
    StateFull NVARCHAR(100),  
    ZipCode NVARCHAR(20),  
    Country_Region NCHAR(2),  
    Country_Region_Full NVARCHAR(100),  
    Birthday DATETIME2,  
    Age INT,  
    Occupation NVARCHAR(100),  
    Company NVARCHAR(100),  
    Vehicle NVARCHAR(100),  
    Latitude DECIMAL(10,6),  
    Longitude DECIMAL(10,6)  
) AS customer_dataset; 

C. Külső adatforrás létrehozása

Az alábbi példa bemutatja, hogyan hozhat létre külső adatforrást a külső táblák és parancsok egyszerűsítése érdekében, például OPENROWSET:

CREATE EXTERNAL DATA SOURCE [Cold_Lake] 
WITH ( 
LOCATION = 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/'); 

Egy külső adatforrás létrehozásával egyszerűbbé OPENROWSETteheti például a következőket:

-- USING DATA SOURCE WITH OPENROWSET 
SELECT TOP 100 * FROM OPENROWSET 
(BULK '/customer.parquet' 
, FORMAT = 'parquet' 
, DATA_SOURCE = 'Cold_Lake' ) 
 AS Customer_dataset; 
-- USING DATA SOURCE WITH OPENROWSET 
SELECT TOP 100 *  
FROM OPENROWSET(  
    BULK '/customer.csv',  
    FORMAT = 'CSV',  
    DATA_SOURCE = 'Cold_Lake', 
    FIRST_ROW = 2  
) WITH (  
    CustomerKey INT,  
    GeoAreaKey INT,  
    StartDT DATETIME2,  
    EndDT DATETIME2,  
    Continent NVARCHAR(50),  
    Gender NVARCHAR(10),  
    Title NVARCHAR(10),  
    GivenName NVARCHAR(100),  
    MiddleInitial VARCHAR(2),  
    Surname NVARCHAR(100),  
    StreetAddress NVARCHAR(200),  
    City NVARCHAR(100),  
    State NVARCHAR(100),  
    StateFull NVARCHAR(100),  
    ZipCode NVARCHAR(20),  
    Country_Region NCHAR(2),  
    Country_Region_Full NVARCHAR(100),  
    Birthday DATETIME2,  
    Age INT,  
    Occupation NVARCHAR(100),  
    Company NVARCHAR(100),  
    Vehicle NVARCHAR(100),  
    Latitude DECIMAL(10,6),  
    Longitude DECIMAL(10,6)  
) AS customer_dataset; 

D. Külső tábla létrehozása Parquet számára

Az alábbi minta bemutatja, hogyan állíthat be külső fájlformátumot, majd hogyan hozhat létre egy külső táblát kifejezetten parquet-adatokhoz.

CREATE EXTERNAL FILE FORMAT Parquetff WITH (FORMAT_TYPE=PARQUET); 

CREATE EXTERNAL TABLE [ext_product]( 
    [ProductKey] [int] NULL, 
    [ProductCode] [nvarchar](255) NULL, 
    [ProductName] [nvarchar](500) NULL, 
    [Manufacturer] [nvarchar](50) NULL, 
    [Brand] [nvarchar](50) NULL, 
    [Color] [nvarchar](20) NULL, 
    [WeightUnit] [nvarchar](20) NULL, 
    [Weight] DECIMAL(20, 5) NULL, 
    [Cost] DECIMAL(20, 5) NULL, 
    [Price] DECIMAL(20, 5) NULL, 
    [CategoryKey] [int] NULL, 
    [CategoryName] [nvarchar](30) NULL, 
    [SubCategoryKey] [int] NULL, 
    [SubCategoryName] [nvarchar](50) NULL) 
WITH 
(LOCATION = '/product.parquet' 
,DATA_SOURCE = [Cold_Lake] 
,FILE_FORMAT = Parquetff); 
 
SELECT * FROM [dbo].[ext_product] 

E. Külső tábla létrehozása CSV-hez

Az alábbi minta bemutatja, hogyan állíthat be külső fájlformátumot, és hogyan hozhat létre egy külső táblát kifejezetten CSV-adatokhoz.

CREATE EXTERNAL FILE FORMAT [CSVFileFormat]  
WITH (  
    FORMAT_TYPE = DELIMITEDTEXT,  
    FORMAT_OPTIONS (  
        FIELD_TERMINATOR = ',',  
        FIRST_ROW = 2  
    )  
); 
 
CREATE EXTERNAL TABLE ext_customer_csv ( 
    CustomerKey INT NOT NULL,  
    GeoAreaKey INT NOT NULL,  
    StartDT DATETIME2 NOT NULL, 
    EndDT DATETIME2 NOT NULL, 
    Continent VARCHAR(50) NOT NULL, 
    Gender VARCHAR(10) NOT NULL, 
    Title VARCHAR(10) NOT NULL,  
    GivenName VARCHAR(100) NOT NULL,  
    MiddleInitial VARCHAR(2) NOT NULL,  
    Surname VARCHAR(100) NOT NULL, 
    StreetAddress VARCHAR(200) NOT NULL, 
    City VARCHAR(100) NOT NULL, 
    State VARCHAR(100) NOT NULL, 
    StateFull VARCHAR(100) NOT NULL, 
    ZipCode VARCHAR(20) NOT NULL,  
    Country_Region CHAR(2) NOT NULL 
    ) 
WITH (  
LOCATION = '/customer.csv' 
, DATA_SOURCE = Cold_Lake 
, FILE_FORMAT = CSVFileFormat 
); 

SELECT * FROM [dbo].[ext_customer_csv]; 

F. Adatok betöltése AZ OPENROWSET használatával

Az alábbi minta bemutatja, hogyan lehet adatokat OPENROWSET segítségével betölteni egy új táblába.

SELECT * 
INTO tb_store 
FROM OPENROWSET 
(BULK 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/Contoso/store.parquet' 
, FORMAT = 'parquet' )
 AS STORE;

Meglévő táblához a INSERT INTO használható a tábla feltöltéséhez a OPENROWSET-ből.

INSERT INTO tb_store  
SELECT TOP 100 * FROM OPENROWSET 
(BULK ' abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/contoso/store.parquet' 
, FORMAT = 'parquet' ) 
 AS STORE; 

G. Metaadatfüggvények használata – sp_describe_first_result_set

A sp_describe_first_result_set függvény a OPENROWSET (BULK) függvénnyel kombinálva használható a külső fájlséma becsléséhez. Az CREATE TABLE és CREATE EXTERNAL TABLE utasításokhoz, valamint a további adatfeltáráshoz azonosíthatja a sémát.

A sp_describe_first_result_set függvény az adatok mintáját használja a séma becsléséhez. Ha a minta nem reprezentatív, pontatlan eredményeket adhat. Ha a séma már ismert, adja meg a WITH záradékban.

EXEC sp_describe_first_result_set N'  
   SELECT * FROM OPENROWSET(  
      BULK ''abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/Contoso/store.parquet'',  
      FORMAT = ''parquet''  
   ) AS DATA'; 

További információért lásd: sp_describe_first_result_set().

H. Metaadatfüggvények használata – fájlnév() és filepath()

A Fabric SQL database emellett lehetővé teszi a feltárást a mappák és a fájlok között, valamint a dinamikus lekérdezések létrehozását, amelyek az OPENROWSET-el kombinálva virtuális oszlopokként is használhatók az adatokhoz több almappában lévő adatfájlokban.

Az alábbi példa az összes parquet-fájlt és annak helyét sorolja fel.

SELECT 
  r.filename() as file_name
, r.filepath() as full_path 
FROM OPENROWSET
   (BULK 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/*/*.parquet',  
    FORMAT = 'parquet'  
   ) AS r 
GROUP BY r.filename(), r.filepath() 
ORDER BY file_name;  

További információ: filename() és filepath().