Del via


Datavirtualisering (forhåndsvisning)

Gælder for:SQL-database i Microsoft Fabric

Vigtigt

Denne funktion er i prøveversion.

Datavirtualisering i SQL-database i Fabric muliggør forespørgsler på eksterne data, der er lagret i OneLake ved hjælp af T-SQL.

Med datavirtualiseringssyntaks kan du udføre Transact-SQL (T-SQL) forespørgsler på filer, der gemmer data i almindelige dataformater i OneLake. Du kan kombinere disse data med lokalt gemte relationelle data ved at bruge joins. Med datavirtualisering kan du transparent tilgå eksterne data i skrivebeskyttet tilstand, mens du bevarer dem i dets oprindelige format og placering.

Syntaks

Fabric SQL Database understøtter følgende datavirtualiseringsfunktioner:

Godkendelse

Autentificering til Fabric Lakehouses bruger Microsoft Entra ID passthrough-autentificering.

Adgang til filer fra Fabric OneLake kræver, at brugerens identitet har tilladelse til både Lakehouse og filplacering.

Tilladelser

Brugere skal have LÆSEADGANG til filen eller mappen i OneLake, hvilket håndhæves via Microsoft Entra ID passthrough.

Understøttede filtyper

  • Parquet
  • CSV
  • JSON-filformatet understøttes indirekte ved at specificere CSV-filformatet, hvor forespørgsler returnerer hvert dokument som en separat række. Du kan parse rækker yderligere ved hjælp af JSON_VALUE og OPENJSON.

Understøttede datakilder

Kun Fabric Lakehouse understøttes i øjeblikket nativt. Dog kan OneLake-genveje bruges til at udvide til forskellige eksterne kilder som Azure Blob Storage, Azure Data Lake Gen2, Dataverse, Amazon S3, Amazon S3-kompatibel, Google Cloud Storage, offentlig HTTPS og flere.

For mere information om Fabric Shortcuts, se Unify datakilder med OneLake-genveje.

Sådan finder du ABFSS-filens placering for et søhus

For at oprette en Fabric Lakehouse-datakilde skal du angive workspace ID, lejer og lakehouse ID. For at finde ABFSS-filens placering af et søhus:

  1. Gå til Fabric-portalen.
  2. Navigér til dit Lakehouse.
  3. Navigér til den ønskede mappeplacering.
  4. Vælg ... og derefter Egenskaber.
  5. Kopier ABFS-stien, som ser nogenlunde sådan her ud: abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/.

Limitations

  • CSV-eksterne tabeller skal forespørges ved hjælp af skema-kvalificerede navne, for eksempel dbo.Customer_CSV.
  • BULK INSERT understøttes i øjeblikket kun, når den bruges i kombination med OPENROWSET (BULK).

Eksempler

Følgende eksempelscripts bruger et Fabric Lakehouse-navn, Cold_Lake som hoster Contoso-butiks- og kundedata i parquet- og csv-filer.

Skærmbillede af eksempelet på søhuset kaldet Cold _ Lake.

A. Forespørg en parquet-fil med OPENROWSET

Følgende eksempel demonstrerer brugen af OPENROWSET til at hente prøvedata fra en Parquet-fil.

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. Forespørg en CSV-fil med OPENROWSET

Følgende eksempel demonstrerer brugen af OPENROWSET til at hente prøvedata fra en CSV-fil.

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. Opret ekstern datakilde

Følgende eksempel viser, hvordan man opretter en ekstern datakilde for at forenkle eksterne tabeller og kommandoer som OPENROWSET:

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

Med oprettet en ekstern datakilde kan du forenkle OPENROWSET, for eksempel:

-- 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. Opret ekstern tabel til parket

Følgende eksempel demonstrerer, hvordan man opsætter et eksternt filformat og derefter opretter en ekstern tabel specifikt til parketdata.

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. Opret ekstern tabel til CSV

Følgende eksempel demonstrerer, hvordan man opsætter et eksternt filformat og opretter en ekstern tabel specifikt til CSV-data.

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. Indtast data ved hjælp af OPENROWSET

Følgende eksempel viser, hvordan OPENROWSET man kan bruge data til at indlæse data i en ny tabel:

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;

For en eksisterende tabel INSERT INTO kan bruges til at udfylde tabellen fra OPENROWSET:

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. Brug metadata-funktioner - sp_describe_first_result_set

Funktionen sp_describe_first_result_set kan bruges i kombination OPENROWSET (BULK) med til at estimere det eksterne filskema. Du kan identificere skemaet for or-sætningerne CREATE TABLECREATE EXTERNAL TABLE og for yderligere dataudforskning.

Funktionen sp_describe_first_result_set bruger et udvalg af dataene til at estimere skemaet. Hvis prøven ikke er repræsentativ, kan den give unøjagtige resultater. Hvis skemaet allerede er kendt, specificeres det gennem WITH klausulen.

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'; 

For mere information, se sp_describe_first_result_set().

H. Brug metadata-funktioner - filnavn() og filsti()

Fabric SQL-databasen stiller også funktioner til rådighed filename()filepath() for mappe- og filudforskning samt dynamisk forespørgselsoprettelse, som også kan bruges til virtuelle kolonner i kombination med OPENROWSET til datafiler på tværs af flere undermapper.

Følgende eksempel viser alle parketfiler og deres placering.

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;  

For mere information, se filnavn() og filsti().