【问题标题】:Azure Synapse SQL on-demand pagination (OFFSET/FETCH)Azure Synapse SQL 按需分页 (OFFSET/FETCH)
【发布时间】:2021-02-10 22:09:50
【问题描述】:

我们有 Azure 数据湖 - 数据以 parquet 文件格式存储在其中。我们正在尝试使用 Azure synapse SQL-on Demand 从 parquet 文件中获取数据。

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

如何为 SQL 按需查询做这样的事情?这是我们的按需 SQL 查询示例。

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

【问题讨论】:

    标签: sql azure azure-synapse azure-data-lake-gen2


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      更新

      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
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-19
        • 1970-01-01
        • 1970-01-01
        • 2012-12-25
        • 2022-06-28
        • 2021-09-19
        • 2020-10-02
        • 1970-01-01
        相关资源
        最近更新 更多