Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Область применения: SQL Server
В этой статье рассматриваются варианты использования PolyBase для запроса внешних данных на месте, называемого виртуализацией данных для различных внешних источников данных.
Синтаксис T-SQL, используемый в PolyBase
Чтобы использовать PolyBase, необходимо создать внешние таблицы для ссылок на внешние данные. Перейдите к
- CREATE DATABASE SCOPED CREDENTIAL (Transact-SQL)
- CREATE EXTERNAL DATA SOURCE (Transact-SQL)
- CREATE EXTERNAL FILE FORMAT (Transact-SQL)
- CREATE EXTERNAL TABLE (Transact-SQL)
- CREATE STATISTICS (Transact-SQL)
Примечание.
Чтобы использовать PolyBase, необходимо иметь роль системного администратора или разрешения на управление сервером базы данных.
Учебники
Примеры запросов см. в разделе Запросы PolyBase.
Дополнительные руководства по различным внешним источникам данных см. в следующем разделе:
- Hadoop
- Хранилище BLOB-объектов Azure
- SQL Server
- Oracle
- Teradata
- MongoDB
- Универсальные типы ODBC
- S3-совместимое хранилище объектов
- CSV
- Таблица Delta
Функции метаданных файлов
Иногда может потребоваться знать, какой файл или источник папок коррелирует с определенной строкой в результирующем наборе.
Вы можете использовать функции filepath и filename возвращать имена файлов и (или) путь в результирующем наборе. Также вы можете применить их для фильтрации данных по именам файлов и (или) путям к папкам. В следующих разделах содержатся краткие описания и примеры.
Функция filename
Эта функция возвращает имя файла, из которого получена строка.
Тип возвращаемых данных — nvarchar(1024). Для оптимальной производительности всегда приводите результат функции filename к соответствующему типу данных. Если используется символьный тип данных, убедитесь, что используется соответствующая длина.
Следующий пример считывает файлы данных из набора NYC Yellow Taxi (данные о поездках в такси за три последних месяца 2017 года) и возвращает число поездок, внесенных в каждый файл. Часть OPENROWSET запроса указывает, какие файлы будут считываться.
SELECT
nyc.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM
OPENROWSET(
BULK 'parquet/taxi/year=2017/month=9/*.parquet',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT='PARQUET'
) nyc
GROUP BY nyc.filename();
В следующем примере показано, как filename() можно использовать в WHERE предложении для фильтрации файлов для чтения. Он обращается ко всей папке в OPENROWSET части запроса и фильтрует файлы в предложении WHERE .
Результаты будут такими же, как в предыдущем примере.
SELECT
r.filename() AS [filename]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_2017-*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2)
WITH (C1 varchar(200) ) AS [r]
WHERE
r.filename() IN ('yellow_tripdata_2017-10.csv', 'yellow_tripdata_2017-11.csv', 'yellow_tripdata_2017-12.csv')
GROUP BY
r.filename()
ORDER BY
[filename];
Функция filepath
Эта функция возвращает полный путь или часть пути:
- При вызове без параметра она возвращает полный путь, из которого была получена строка.
- При вызове с параметром возвращает часть пути, которая соответствует подстановочным знакам по позиции, указанной в параметре. Например, при значении параметра 1 возвращается часть пути, соответствующая первому подстановочному знаку.
Тип возвращаемых данных — nvarchar(1024). Для оптимальной filepath производительности всегда приводит результат функции к соответствующему типу данных. Если используется символьный тип данных, убедитесь, что используется соответствующая длина.
Следующий пример считывает файлы данных из набора NYC Yellow Taxi (данные о поездках в такси за три последних месяца 2017 года). Он возвращает число поездок, сохраненных в каждом пути. Часть OPENROWSET запроса указывает, какие файлы будут считываться.
SELECT
r.filepath() AS filepath
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_2017-1*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2
)
WITH (
vendor_id INT
) AS [r]
GROUP BY
r.filepath()
ORDER BY
filepath;
В следующем примере показано, как filepath() можно использовать в WHERE предложении для фильтрации файлов для чтения.
Вы можете использовать подстановочные знаки в OPENROWSET части запроса и отфильтровать файлы в предложении WHERE . Результаты будут такими же, как в предыдущем примере.
SELECT
r.filepath() AS filepath
,r.filepath(1) AS [year]
,r.filepath(2) AS [month]
,COUNT_BIG(*) AS [rows]
FROM OPENROWSET(
BULK 'csv/taxi/yellow_tripdata_*-*.csv',
DATA_SOURCE = 'SqlOnDemandDemo',
FORMAT = 'CSV',
PARSER_VERSION = '2.0',
FIRSTROW = 2
)
WITH (
vendor_id INT
) AS [r]
WHERE
r.filepath(1) IN ('2017')
AND r.filepath(2) IN ('10', '11', '12')
GROUP BY
r.filepath()
,r.filepath(1)
,r.filepath(2)
ORDER BY
filepath;