#sql #azure #azure-synapse #azure-data-lake-gen2
#sql #azure #azure-synapse #azure-data-lake-gen2
Вопрос:
У нас есть озеро данных Azure, где данные хранятся в формате файла parquet. Мы пытаемся извлечь данные из файла parquet с помощью Azure synapse SQL-on-Demand.
То, что мы ищем, — это разбивка на страницы при извлечении данных. Итак, если есть 10 000 записей, соответствующих критериям, мы хотим вернуть только 100 строк в пользовательском интерфейсе, а затем следующие 100 и т. Д. В SQL-запросе есть СМЕЩЕНИЕ / ВЫБОРКА, которые мы можем использовать.
Как это сделать для запроса SQL по требованию? Вот наш пример запроса SQL по требованию.
SELECT * FROM
OPENROWSET
(
BULK '*.parquet',
FORMAT='PARQUET'
)
AS rows
Ответ №1:
Обновить
OFFSET
FETCH
теперь SQL OD официально поддерживается вместе с несколькими другими функциями.
Обновить
Просто попытался выполнить openrowset с OFFSET
помощью and FETCH
— теперь это работает.
Как указано в этом сообщении в блоге, OFFSET
/ FETCH
в настоящее время не поддерживается SQL OD, однако есть некоторые обходные пути.
ВЕРХНЕЕ смещение выборка
SELECT *
FROM (
SELECT TOP (@fetch) *
FROM
(SELECT TOP(@offset @fetch) *
FROM dbo.Supplier
ORDER BY S_SUPPKEY ASC
) AS topFO
ORDER BY S_SUPPKEY DESC
) AS bottomF
ORDER BY S_SUPPKEY ASC
Окно ROW_NUMBER
SELECT TOP (@fetch) *
FROM
( SELECT ROW_NUMBER() OVER(ORDER BY S_SUPPKEY) AS RowNum, *
FROM dbo.Supplier AS tr) AS data
WHERE @offset < RowNum
ORDER BY data.S_SUPPKEY
Ответ №2:
В настоящее время SQL по требованию не поддерживает смещение / выборку, как в документе. Сегодня в рабочих пространствах synapse нет доступных функций для разбивки на страницы.