Not
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Gäller för:✅SQL-databas i Microsoft Fabric
Viktigt!
Den här funktionen är i förhandsversion.
Med datavirtualisering i SQL Database i Fabric kan du köra frågor mot externa data som lagras i OneLake med hjälp av T-SQL.
Med datavirtualiseringssyntax kan du köra Transact-SQL frågor (T-SQL) på filer som lagrar data i vanliga dataformat i OneLake. Du kan kombinera dessa data med lokalt lagrade relationsdata med hjälp av kopplingar. Med datavirtualisering kan du på ett transparent sätt komma åt externa data i skrivskyddat läge, samtidigt som du behåller dem i sin ursprungliga format och plats.
Syntax
Fabric SQL Database stöder följande funktioner för datavirtualisering:
- SKAPA DATABASBEGRÄNSADE AUTENTISERINGSUPPGIFTER
- SKAPA EN EXTERN DATAKÄLLA
- CREATE EXTERNAL FILE FORMAT (Skapa ett externt filformat)
- SKAPA EXTERNTABELL
- OPENROWSET (BULK)
- VÄLJ INTO FRÅN OPENROWSET
- Metadatafunktioner: filename(), filepath(), sp_describe_first_result_set()
Authentication
Autentisering till Fabric Lakehouses utnyttjar Microsoft Entra ID-autentisering med passthrough.
Åtkomst till filer från Fabric OneLake kräver att användarens identitet har behörighet för både Lakehouse- och filplatsen.
Permissions
Användare måste ha LÄS-åtkomst till filen eller mappen i OneLake, som säkerställs via Microsoft Entra ID-autentisering.
Filtyper som stöds
- Parquet
- CSV
- JSON-filformat stöds indirekt genom att ange CSV-filformatet där frågor returnerar varje dokument som en separat rad. Du kan parsa rader ytterligare med hjälp av JSON_VALUE och OPENJSON.
Datakällor som stöds
Endast Fabric Lakehouse stöds för närvarande internt. OneLake-genvägar kan dock användas för att utöka till olika externa källor som Azure Blob Storage, Azure Data Lake Gen2, Dataverse, Amazon S3, Amazon S3 Compatible, Google Cloud Storage, offentliga HTTPS med mera.
Mer information om Fabric-genvägar finns i Förena datakällor med OneLake-genvägar.
Så här hittar du ABFSS-filplatsen för ett sjöhus
För att skapa en Fabric Lakehouse-datakälla behöver du ange arbetsområdes-ID, hyresgäst och Lakehouse-ID. Så här hittar du ABFSS-filplatsen för ett sjöhus:
- Gå till Fabric-portalen.
- Navigera till din Lakehouse.
- Navigera till önskad mappplats.
- Välj
...och sedan Egenskaper. - Kopiera ABFS-banan, som ser ungefär ut så här:
abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/.
Begränsningar
- Externa CSV-tabeller måste efterfrågas med schemakvalificerade namn, till exempel
dbo.Customer_CSV. -
BULK INSERTstöds för närvarande endast när det används i kombination medOPENROWSET (BULK).
Examples
Följande exempelskript använder en Fabric Lakehouse med namnet Cold_Lake som rymmer Contoso butik- och kunddata i csv- och parquet-filer.
A. Fråga en parquet-fil med OPENROWSET
I det följande exemplet demonstreras användningen av OPENROWSET för att hämta exempeldata från 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. Fråga en CSV-fil med OPENROWSET
I följande exempel visas hur du kan använda OPENROWSET för att hämta exempeldata från 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. Skapa en extern datakälla
I följande exempel visas hur du skapar en extern datakälla för att förenkla externa tabeller och kommandon som OPENROWSET:
CREATE EXTERNAL DATA SOURCE [Cold_Lake]
WITH (
LOCATION = 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/');
När en extern datakälla har skapats kan du förenkla OPENROWSET, till exempel:
-- 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. Skapa en extern tabell för parquet
Följande exempel visar hur du konfigurerar ett externt filformat och sedan skapar en extern tabell specifikt för 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. Skapa en extern tabell för CSV
Följande exempel visar hur du konfigurerar ett externt filformat och skapar en extern tabell specifikt för 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. Mata in data med OPENROWSET
Följande exempel visar hur OPENROWSET du kan använda för att mata in 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;
För en befintlig tabell INSERT INTO kan användas för att fylla i tabellen från 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. Använd metadatafunktioner – sp_describe_first_result_set
Funktionen sp_describe_first_result_set kan användas i kombination med OPENROWSET (BULK) för att uppskatta det externa filschemat. Du kan identifiera schemat för CREATE TABLE - eller CREATE EXTERNAL TABLE -instruktioner och för ytterligare datautforskning.
Funktionen sp_describe_first_result_set använder ett exempel på data för att beräkna schemat. Om exemplet inte är representativt kan det ge felaktiga resultat. Om schemat redan är känt anger du det via WITH -satsen.
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';
Mer information finns i sp_describe_first_result_set().
H. Använda metadatafunktioner – filename() och filepath()
Fabric SQL Database gör också tillgängliga filename() och filepath() funktioner för mapp- och filutforskning samt dynamiskt frågeskapande, som också kan användas för virtuella kolumner i kombination med OPENROWSET för datafiler över flera undermappar.
I följande exempel visas alla parquet-filer och dess plats.
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;
Mer information finns i filename() och filepath().