Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy:✅Baza danych SQL w usłudze Microsoft Fabric
Ważne
Ta funkcja jest dostępna w wersji zapoznawczej.
Wirtualizacja danych w bazie danych SQL w usłudze Fabric umożliwia wykonywanie zapytań dotyczących danych zewnętrznych przechowywanych w usłudze OneLake przy użyciu języka T-SQL.
Składnia wirtualizacji danych umożliwia wykonywanie zapytań Transact-SQL (T-SQL) dotyczących plików, które przechowują dane w typowych formatach danych w usłudze OneLake. Te dane można połączyć z lokalnie przechowywanymi danymi relacyjnymi przy użyciu sprzężeń. Dzięki wirtualizacji danych można w sposób niewidoczny uzyskiwać dostęp do danych zewnętrznych w trybie tylko do odczytu, zachowując ich oryginalny format i lokalizację.
Składnia
Fabric SQL Database obsługuje następujące funkcje wirtualizacji danych:
- TWORZENIE POŚWIADCZENIA W ZAKRESIE BAZY DANYCH
- TWORZENIE ZEWNĘTRZNEGO ŹRÓDŁA DANYCH
- UTWÓRZ ZEWNĘTRZNY FORMAT PLIKU
- UTWÓRZ TABELĘ ZEWNĘTRZNĄ
- OPENROWSET (BULK)
- WYBIERZ POZYCJĘ W . Z ZESTAWU OPENROWSET
- Funkcje metadanych: nazwa pliku(), filepath(), sp_describe_first_result_set()
Authentication
Uwierzytelnianie w usłudze Fabric Lakehouses używa uwierzytelniania z przekazywaniem Microsoft Entra ID.
Uzyskiwanie dostępu do plików z usługi Fabric OneLake wymaga, aby tożsamość użytkownika miała uprawnienia zarówno do Lakehouse, jak i do lokalizacji pliku.
Permissions
Użytkownicy muszą mieć uprawnienia do odczytu do pliku lub folderu w usłudze OneLake, wymuszane przez przekazywanie identyfikacji Microsoft Entra ID.
Typy obsługiwanych plików
- Parquet
- CSV
- Format pliku JSON jest pośrednio obsługiwany przez określenie formatu pliku CSV, w którym zapytania zwracają każdy dokument jako oddzielny wiersz. Wiersze można analizować dalej przy użyciu JSON_VALUE i pliku OPENJSON.
Obsługiwane źródła danych
Obecnie tylko Fabric Lakehouse jest obsługiwany natywnie. Jednak skróty OneLake mogą służyć do rozszerzania na różne źródła zewnętrzne, takie jak Azure Blob Storage, Azure Data Lake Gen2, Dataverse, Amazon S3, Amazon S3 Zgodne, Google Cloud Storage, publiczny protokół HTTPS i inne.
Aby uzyskać więcej informacji na temat skrótów Fabric, zobacz Unify data sources with OneLake shortcuts (Ujednolicenie źródeł danych za pomocą skrótów OneLake).
Jak znaleźć lokalizację pliku ABFSS w lakehouse'ie
Aby stworzyć źródło danych Fabric Lakehouse, musisz podać identyfikator przestrzeni roboczej, tenant oraz identyfikator lakehouse. Aby znaleźć lokalizację pliku ABFSS lakehouse:
- Otwórz portal Fabric.
- Przejdź do swojego Lakehouse.
- Przejdź do żądanej lokalizacji folderu.
- Wybierz
..., a następnie Właściwości. - Skopiuj ścieżkę ABFS, która wygląda mniej więcej tak:
abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/.
Ograniczenia
- Tabele zewnętrzne CSV muszą być odpytywane przy użyciu nazw kwalifikowanych schematem, na przykład
dbo.Customer_CSV. -
BULK INSERTjest obecnie obsługiwane tylko w przypadku użycia w połączeniu zOPENROWSET (BULK).
Przykłady
Poniższe przykładowe skrypty używają usługi Fabric Lakehouse o nazwie Cold_Lake , która hostuje magazyn firmy Contoso i dane klienta w plikach parquet i csv.
A. Wykonywanie zapytań względem pliku parquet za pomocą zestawu OPENROWSET
Na poniższym przykładzie pokazano użycie OPENROWSET do pobrania przykładowych danych z pliku 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. Wykonywanie zapytań dotyczących pliku CSV za pomocą zestawu OPENROWSET
W poniższym przykładzie pokazano, jak za pomocą OPENROWSET pobrać przykładowe dane z pliku 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. Tworzenie zewnętrznego źródła danych
W poniższym przykładzie pokazano, jak utworzyć zewnętrzne źródło danych w celu uproszczenia tabel zewnętrznych i poleceń, takich jak OPENROWSET:
CREATE EXTERNAL DATA SOURCE [Cold_Lake]
WITH (
LOCATION = 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/');
Za pomocą utworzonego zewnętrznego źródła danych można uprościć usługę OPENROWSET, na przykład:
-- 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. Tworzenie tabeli zewnętrznej dla parquet
W poniższym przykładzie pokazano, jak skonfigurować format pliku zewnętrznego, a następnie utworzyć tabelę zewnętrzną specjalnie dla danych 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. Tworzenie tabeli zewnętrznej dla plików CSV
W poniższym przykładzie pokazano, jak skonfigurować format pliku zewnętrznego i utworzyć tabelę zewnętrzną specjalnie dla danych 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. Pozyskiwanie danych przy użyciu zestawu OPENROWSET
W poniższym przykładzie pokazano, jak OPENROWSET można użyć do pozyskiwania danych do nowej tabeli:
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;
W przypadku istniejącej tabeli INSERT INTO można użyć, aby wypełnić tabelę 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. Użyj funkcji metadanych — sp_describe_first_result_set
Funkcja sp_describe_first_result_set może być używana w połączeniu z elementem OPENROWSET (BULK) w celu oszacowania schematu pliku zewnętrznego. Możesz zidentyfikować schemat instrukcji CREATE TABLE lub CREATE EXTERNAL TABLE oraz do dalszej eksploracji danych.
Funkcja sp_describe_first_result_set używa próbki danych do oszacowania schematu. Jeśli próbka nie jest reprezentatywna, może dostarczyć niedokładnych wyników. Jeśli schemat jest już znany, określ go za pomocą WITH klauzuli .
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';
Aby uzyskać więcej informacji, zobacz sp_describe_first_result_set().
H. Korzystanie z funkcji metadanych — nazwa pliku() i filepath()
Baza danych Fabric SQL udostępnia funkcje filename() i filepath() do eksploracji folderów i plików oraz dynamicznego tworzenia zapytań, które można również stosować w przypadku kolumn wirtualnych w połączeniu z funkcją OPENROWSET do plików danych w wielu podfolderach.
W poniższym przykładzie wymieniono wszystkie pliki parquet oraz ich lokalizacje.
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;
Aby uzyskać więcej informacji, zobacz nazwa pliku() i filepath().