Merk
Tilgang til denne siden krever autorisasjon. Du kan prøve å logge på eller endre kataloger.
Tilgang til denne siden krever autorisasjon. Du kan prøve å endre kataloger.
Gjelder for:✅SQL-database i Microsoft Fabric
Viktig!
Denne funksjonen er i forhåndsversjon.
Datavirtualisering i SQL-database i Fabric muliggjør forespørring av eksterne data lagret i OneLake ved bruk av T-SQL.
Med datavirtualiseringssyntaks kan du kjøre Transact-SQL (T-SQL) spørringer på filer som lagrer data i vanlige dataformater i OneLake. Du kan kombinere disse dataene med lokalt lagrede relasjonsdata ved å bruke joins. Med datavirtualisering kan du transparent få tilgang til eksterne data i skrivebeskyttet modus, samtidig som de beholder sitt opprinnelige format og plassering.
Syntaks
Fabric SQL Database støtter følgende datavirtualiseringsmuligheter:
- OPPRETT DATABASE SCOPED CREDENTIAL
- OPPRETT EKSTERN DATAKILDE
- OPPRETT EKSTERNT FILFORMAT
- OPPRETT EKSTERN TABELL
- OPENROWSET (BULK)
- Metadata-funksjoner: filnavn(), filsti(), sp_describe_first_result_set()
Autentisering
Autentisering til Fabric Lakehouses bruker Microsoft Entra ID passthrough-autentisering.
Å få tilgang til filer fra Fabric OneLake krever at brukeren har tillatelse til både Lakehouse og filplassering.
Permissions
Brukere må ha LESE-tilgang til filen eller mappen i OneLake, håndhevet via Microsoft Entra ID-passthrough.
Filtyper som støttes
- Parquet
- CSV
- JSON-filformatet støttes indirekte ved å spesifisere CSV-filformatet hvor spørringer returnerer hvert dokument som en egen rad. Du kan parse rader videre ved å bruke JSON_VALUE og OPENJSON.
Støttede datakilder
Kun Fabric Lakehouse støttes for øyeblikket nativt. OneLake-snarveier kan imidlertid brukes til å utvide til ulike eksterne kilder som Azure Blob Storage, Azure Data Lake Gen2, Dataverse, Amazon S3, Amazon S3-kompatibel, Google Cloud Storage, offentlig HTTPS og mer.
For mer informasjon om Fabric Shortcuts, se Unify datasources with OneLake snarveier.
Hvordan finne ABFSS-filplasseringen til et innsjøhus
For å opprette en Fabric Lakehouse-datakilde må du oppgi arbeidsområde-ID, leietaker og lakehouse-ID. For å finne ABFSS-filplasseringen til et innsjøhus:
- Gå til Stoffportalen.
- Naviger til ditt Lakehouse.
- Naviger til ønsket mappeplassering.
- Velg
...og deretter Egenskaper. - Kopier ABFS-banen, som ser omtrent slik ut:
abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/.
Limitations
- CSV-eksterne tabeller må forespørres med skjema-kvalifiserte navn, for eksempel
dbo.Customer_CSV. -
BULK INSERTstøttes for øyeblikket kun når den brukes i kombinasjon medOPENROWSET (BULK).
Eksempler
Følgende eksempelskript bruker et Fabric Lakehouse som er vert Cold_Lake for Contoso-lagrings- og kundedata i parquet- og csv-filer.
En. Søk i en parquet-fil med OPENROWSET
Følgende eksempel demonstrerer bruken av OPENROWSET for å 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. Søk i en CSV-fil med OPENROWSET
Følgende eksempel demonstrerer bruken av OPENROWSET for å hente eksempeldata 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. Opprett ekstern datakilde
Følgende eksempel viser hvordan man oppretter en ekstern datakilde for å 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 en ekstern datakilde opprettet, 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. Lag ekstern tabell for parkett
Følgende eksempel viser hvordan man setter opp et eksternt filformat, og deretter lager en ekstern tabell spesielt for parquet-data.
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. Opprett ekstern tabell for CSV
Følgende eksempel demonstrerer hvordan man setter opp et eksternt filformat og lager en ekstern tabell spesielt for 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. Inntak data ved bruk av OPENROWSET
Følgende eksempel viser hvordan OPENROWSET man kan bruke det til å legge inn data i en ny tabell:
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 tabell INSERT INTO kan brukes til å fylle 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. Bruk metadatafunksjoner - sp_describe_first_result_set
Funksjonen sp_describe_first_result_set kan brukes i kombinasjon med OPENROWSET (BULK) for å estimere det eksterne filskjemaet. Du kan identifisere skjemaet for OR-setningene CREATE TABLECREATE EXTERNAL TABLE og for videre datautforskning.
Funksjonen sp_describe_first_result_set bruker et utvalg av dataene for å estimere skjemaet. Hvis utvalget ikke er representativt, kan det gi unøyaktige resultater. Hvis skjemaet allerede er kjent, spesifiser det gjennom 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 mer informasjon, se sp_describe_first_result_set().
H. Bruk metadatafunksjoner - filename() og filepath()
Fabric SQL-databasen gjør også funksjoner tilgjengelig filename()filepath() for mappe- og filutforskning, samt dynamisk spørringsopprettelse, som også kan brukes for virtuelle kolonner i kombinasjon med OPENROWSET til datafiler på tvers av flere undermapper.
Følgende eksempel viser alle parkettfilene og hvor de befinner seg.
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 mer informasjon, se filnavn() og filepath().