Bemærk
Adgang til denne side kræver godkendelse. Du kan prøve at logge på eller ændre mapper.
Adgang til denne side kræver godkendelse. Du kan prøve at ændre mapper.
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:
- OPRET DATABASESCOPED CREDENTIAL
- OPRET EKSTERN DATAKILDE
- OPRET EKSTERNT FILFORMAT
- OPRET EKSTERN TABEL
- OPENROWSET (BULK)
- VÆLG I .. FRA OPENROWSET
- Metadatafunktioner: filnavn(), filsti(), sp_describe_first_result_set()
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:
- Gå til Fabric-portalen.
- Navigér til dit Lakehouse.
- Navigér til den ønskede mappeplacering.
- Vælg
...og derefter Egenskaber. - 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 INSERTunderstøttes i øjeblikket kun, når den bruges i kombination medOPENROWSET (BULK).
Eksempler
Følgende eksempelscripts bruger et Fabric Lakehouse-navn, Cold_Lake som hoster Contoso-butiks- og kundedata i parquet- og csv-filer.
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().