Azure Synapse SQL按需分页OFFSET / FETCH 更新更新 TOP偏移量+提取 ROW_NUMBER窗口

问题描述

我们有Azure数据湖-数据以镶木地板文件格式存储。我们正在尝试使用Azure Synapse sql-on Demand从镶木地板文件获取数据。

我们正在寻找的是-在获取数据时进行分页。因此,如果有10,000条符合条件的记录,我们只想在UI上返回100行,然后再返回100行,依此类推。 在SQL查询中,可以使用OFFSET / FETCH。

如何对sql按需查询执行此操作?这是我们的按需SQL查询示例。

  SELECT * FROM 
    OPENROWSET
     ( 
       BULK '*.parquet',FORMAT='PARQUET'
     ) 
     AS rows

解决方法

目前,SQL点播不支持document中的偏移/获取。如今,突触工作区中没有可用的功能来进行分页。

,

更新

OFFSET / FETCH现在为officially supported by SQL OD,还有其他一些功能。

更新

只需尝试使用OFFSETFETCH执行openrowset-现在就可以使用。


this blog post中所述,SQL OD当前不支持OFFSET / FETCH,但是有一些解决方法。

TOP偏移量+提取

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