Заметка
Доступ к этой странице требует авторизации. Вы можете попробовать войти в систему или изменить каталог.
Доступ к этой странице требует авторизации. Вы можете попробовать сменить директорию.
Применимо к:✅База данных SQL в Microsoft Fabric
Это важно
Эта функция доступна в предварительной версии.
Виртуализация данных в базе данных SQL в Fabric позволяет запрашивать внешние данные, хранящиеся в OneLake, с помощью T-SQL.
С помощью синтаксиса виртуализации данных можно выполнять запросы Transact-SQL (T-SQL) к файлам, которые хранят данные в общих форматах данных в OneLake. Эти данные можно объединить с локально хранимыми реляционными данными с помощью соединений. С помощью виртуализации данных можно прозрачно получать доступ к внешним данным в режиме только для чтения, сохраняя его в исходном формате и расположении.
Синтаксис
База данных SQL Fabric поддерживает следующие возможности виртуализации данных:
- СОЗДАТЬ УЧЕТНЫЕ ДАННЫЕ В ПРЕДЕЛАХ БАЗЫ ДАННЫХ
- СОЗДАТЬ ВНЕШНИЙ ИСТОЧНИК ДАННЫХ
- СОЗДАТЬ ВНЕШНИЙ ФОРМАТ ФАЙЛА
- СОЗДАТЬ ВНЕШНЮЮ ТАБЛИЦУ
- OPENROWSET (BULK)
- ВЫБЕРИТЕ В .. FROM OPENROWSET
- Функции метаданных: filename(), filepath(), sp_describe_first_result_set()
Authentication
Проверка подлинности в Fabric Lakehouses использует сквозную аутентификацию Microsoft Entra ID.
Для доступа к файлам из Fabric OneLake требуется, чтобы удостоверение пользователя имело разрешение как для Lakehouse, так и для местоположения файла.
Permissions
Пользователи должны иметь доступ для чтения к файлу или папке в OneLake, который предоставляется через сквозную аутентификацию Microsoft Entra ID.
Поддерживаемые типы файлов
- Parquet
- CSV
- Формат JSON-файла косвенно поддерживается путем указания формата CSV-файла, в котором запросы возвращают каждый документ в виде отдельной строки. Кроме того, можно проанализировать строки с помощью JSON_VALUE и OPENJSON.
Поддерживаемые источники данных
В настоящее время поддерживается только Fabric Lakehouse. Однако короткие ссылки OneLake можно использовать для подключения к различным внешним источникам, таким как хранилище BLOB-объектов Azure, Azure Data Lake второго поколения, Dataverse, Amazon S3, совместимые с Amazon S3, Google Cloud Storage, общедоступный HTTPS и многое другое.
Дополнительные сведения о сочетаниях клавиш Fabric см. в разделе "Объединение источников данных" с помощью сочетаний клавиш OneLake.
Как найти расположение файла ABFSS в озерном доме
Чтобы создать источник данных Fabric Lakehouse, необходимо указать идентификатор рабочего пространства, арендатора и идентификатор Lakehouse. Чтобы найти расположение файла ABFSS в озерном доме, выполните следующие действия.
- Перейдите на портал Fabric.
- Перейдите в Lakehouse.
- Перейдите к нужному расположению папки.
- Выберите и нажмите
..."Свойства". - Скопируйте путь ABFS, который выглядит примерно так:
abfss://<workspace ID>@<Tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/.
Ограничения
- Внешние таблицы CSV должны запрашиваться с помощью квалифицированных имен схемы, например
dbo.Customer_CSV. -
BULK INSERTв настоящее время поддерживается только при использовании в сочетании сOPENROWSET (BULK).
Примеры
В следующих примерах скриптов используется Fabric Lakehouse с именем Cold_Lake, в котором хранятся данные магазина Contoso и данные клиентов в файлах parquet и csv.
А. Выполнить запрос к файлу Parquet с помощью OPENROWSET
В следующем примере показано, как использовать OPENROWSET для извлечения примеров данных из файла 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;
В. Запрос CSV-файла с помощью OPENROWSET
В следующем примере показано использование OPENROWSET для получения образца данных из 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;
С. Создание внешнего источника данных
В следующем примере показано, как создать внешний источник данных для упрощения внешних таблиц и команд, таких как OPENROWSET:
CREATE EXTERNAL DATA SOURCE [Cold_Lake]
WITH (
LOCATION = 'abfss://<workspace ID>@<tenant>.dfs.fabric.microsoft.com/<lakehouse ID>/Files/');
Создав внешний источник данных, можно упростить OPENROWSET, например:
-- 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. Создать внешнюю таблицу для Parquet
В следующем примере показано, как настроить внешний формат файла, а затем создать внешнюю таблицу специально для данных 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. Создание внешней таблицы для CSV
В следующем примере показано, как настроить внешний формат файла и создать внешнюю таблицу специально для 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. Загрузка данных с помощью OPENROWSET
В следующем примере показано, как OPENROWSET можно использовать для приема данных в новую таблицу:
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;
Для существующей таблицы можно использовать INSERT INTO для заполнения данными из 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. Использование функций метаданных — sp_describe_first_result_set
Функцию sp_describe_first_result_set можно использовать в сочетании с OPENROWSET (BULK), чтобы оценить схему внешнего файла. Схему можно определить для CREATE TABLE инструкций или CREATE EXTERNAL TABLE инструкций, а также для дальнейшего изучения данных.
Функция sp_describe_first_result_set использует образец данных для оценки схемы. Если пример не является репрезентативным, он может предоставить неточные результаты. Если схема уже известна, укажите ее с помощью WITH предложения.
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';
Дополнительные сведения см. в разделе sp_describe_first_result_set().
H. Использование функций метаданных — filename() и filepath()
База данных SQL Fabric также предоставляет функции filename() и filepath() для изучения папок и файлов, а также для динамического создания запросов, которые можно использовать в виртуальных столбцах в сочетании с OPENROWSET для работы с файлами данных в различных вложенных папках.
В следующем примере перечислены все файлы parquet и их расположение.
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;
Дополнительные сведения см. в разделе filename() и filepath().