Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
platí pro:✅databáze SQL v Microsoft Fabric
Důležité
Tato funkce je ve verzi Preview.
Virtualizace dat v SQL databázi ve Fabric umožňuje dotazování externích dat uložených v OneLake pomocí T-SQL.
Pomocí syntaxe virtualizace dat můžete spouštět dotazy Transact-SQL (T-SQL) na soubory, které ukládají data v běžných formátech dat ve OneLake. Tato data můžete kombinovat s místně uloženými relačními daty pomocí spojení. Díky virtualizaci dat můžete transparentně přistupovat k externím datům v režimu jen pro čtení a zachovat je v původním formátu a umístění.
Syntaxe
Fabric SQL Database podporuje následující možnosti virtualizace dat:
- VYTVOŘENÍ POVĚŘENÍ S ROZSAHEM DATABÁZE
- VYTVOŘENÍ EXTERNÍHO ZDROJE DAT
- VYTVOŘIT EXTERNÍ FORMÁT SOUBORU
- VYTVOŘENÍ EXTERNÍ TABULKY
- OPENROWSET (BULK)
- SELECT INTO .. Z OPENROWSET
- Funkce metadat: filename(), filepath(), sp_describe_first_result_set()
Autentizace
Ověřování pro Fabric Lakehouses používá průchozí ověřování Microsoft Entra ID.
Přístup k souborům z Fabric OneLake vyžaduje, aby identita uživatele měla oprávnění k umístění lakehouse i souboru.
Povolení
Uživatelé musí mít přístup pro čtení k souboru nebo složce v OneLake, což je vynuceno prostřednictvím průchodu přes Microsoft Entra ID.
Podporované typy souborů
- Parquet
- formát CSV
- Formát souboru JSON je nepřímo podporován zadáním formátu SOUBORU CSV, ve kterém dotazy vrací každý dokument jako samostatný řádek. Řádky můžete dále analyzovat pomocí JSON_VALUE a OPENJSON.
Podporované zdroje dat
Nativně se podporuje pouze Fabric Lakehouse. Klávesové zkratky OneLake se ale dají použít k rozšíření na různé externí zdroje, jako je Azure Blob Storage, Azure Data Lake Gen2, Dataverse, Amazon S3, Amazon S3 Compatible, Google Cloud Storage, public HTTPS a další.
Další informace o Fabric Shortcuts najdete v tématu Sjednocení zdrojů dat pomocí zkratek OneLake.
Jak najít umístění souboru ABFSS v jezeře
Pro vytvoření datového zdroje Fabric Lakehouse musíte uvést pracovní prostor, tenant a lakehouse ID. Jak najít umístění souboru ABFSS v Lakehouse:
- Přejděte na portál Fabric.
- Přejděte do svého Lakehouse.
- Přejděte do požadovaného umístění složky.
- Vyberte
...a potom vlastnosti. - Zkopírujte ABFS cestu, která vypadá asi takto:
abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/.
Omezení
- Externí tabulky CSV musí být dotazovány pomocí názvů kvalifikovaných schématem,
dbo.Customer_CSVnapříklad . -
BULK INSERTje v současné době podporován pouze při použití v kombinaci sOPENROWSET (BULK).
Examples
Následující ukázkové skripty používají objekt Fabric Lakehouse s názvem Cold_Lake , který hostuje úložiště Contoso a zákaznická data v souborech parquet a CSV.
A. Dotazování na soubor ve formátu parquet pomocí OPENROWSET
Následující příklad demonstruje použití OPENROWSET ke získání ukázkových dat ze souboru Parquet.
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. Dotazování souboru CSV pomocí OPENROWSET
Následující příklad ukazuje použití OPENROWSET k načtení ukázkových dat ze souboru CSV.
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. Vytvoření externího zdroje dat
Následující příklad ukazuje, jak vytvořit externí zdroj dat pro zjednodušení externích tabulek a příkazů, jako je OPENROWSET:
CREATE EXTERNAL DATA SOURCE [Cold_Lake]
WITH (
LOCATION = 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/');
S vytvořeným externím zdrojem dat můžete zjednodušit OPENROWSETnapříklad:
-- 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. Vytvořit externí tabulku pro parquet
Následující ukázka ukazuje, jak nastavit formát externího souboru a pak vytvořit externí tabulku speciálně pro data parquet.
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. Vytvoření externí tabulky pro CSV
Následující ukázka ukazuje, jak nastavit formát externího souboru a vytvořit externí tabulku speciálně pro data CSV.
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. Ingestování dat pomocí OPENROWSET
Následující ukázka ukazuje, jak OPENROWSET lze použít k ingestování dat do nové tabulky:
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;
Pro existující tabulku INSERT INTO lze použít k naplnění tabulky z 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. Použití funkcí metadat – sp_describe_first_result_set
Funkci sp_describe_first_result_set lze použít v kombinaci s OPENROWSET (BULK) odhadem schématu externího souboru. Můžete identifikovat schéma pro příkazy CREATE TABLE nebo CREATE EXTERNAL TABLE a pro další průzkum dat.
Funkce sp_describe_first_result_set k odhadu schématu používá vzorek dat. Pokud ukázka není reprezentativní, může poskytnout nepřesné výsledky. Pokud je schéma již známé, zadejte ho prostřednictvím WITH klauzule.
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';
Další informace najdete v tématu sp_describe_first_result_set().
H. Použití funkcí metadat – filename() a filepath()
Databáze SQL Fabric také zpřístupňuje filename() funkce filepath() pro zkoumání složek a souborů a dynamické vytváření dotazů, které lze také použít pro virtuální sloupce v kombinaci s OPENROWSET k datovým souborům v několika podsložkách.
Následující příklad uvádí všechny soubory parquet a jejich umístění.
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;
Další informace najdete v tématu název_souboru() a cesta_k_souboru().