需要在 BIG QUERY 中使用用户参数动态生成偏移值以在 looker 中进行分页

Need to generate offset value in BIG QUERY dynamically using user parameter for pagination in looker

我正在尝试为 looker 中的分页创建一个大查询 sql。一次显示的行数将是 5000,这是固定的,用户输入将提供页码。

以下查询在 BQ 中执行良好。这是一个简单的查询

EXECUTE IMMEDIATE """
select distinct column1 from <table> order by column1 limit 10 offset @page
"""
USING 1 AS page;

将使用用户输入提供参数页面。

但是,当我尝试执行下面的查询时,出现错误并且无法执行

EXECUTE IMMEDIATE """
select distinct column1 from <table> order by column1 limit 10 offset 5000 * @page - 5000
"""
USING 1 AS page;

我在这里尝试根据用户将提供的页面动态计算偏移值。 例如,

第 1 页将显示前 5000 行。 第 2 页将是 50002 - 5000 = 5000 第 3 页将是 50003 - 5000 = 10000 等等。

但是,我得到的错误如下

无效的 EXECUTE IMMEDIATE sql 字符串 <query> 按列排序限制 5000 偏移量 5000 * @page - 5000 `,语法错误:预期的输入结束但在 [1:19 得到“*” ]

看来我不能在偏移值中使用乘法等,或者我是否遗漏了什么?

只需在 USING 内进行计算,如下例所示

EXECUTE IMMEDIATE """
select distinct column1 from <table> order by column1 limit 10 offset @page
"""
USING 5000 * 1 AS page;