Разбивка на страницы Azure Synapse SQL по требованию (СМЕЩЕНИЕ / ВЫБОРКА)

#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 нет доступных функций для разбивки на страницы.