sql - 有没有办法在窗口函数中使用 BigQuery SQL 中的声明变量和 ROWS BETWEEN 'variable' PRECEDING AND CURRENT ROW?
问题描述
当前收到错误“窗口框架表达式必须是 [x:x] 处的文字或参数”,仅使用数字 5 即可正常工作,但在我的脚本中经常使用它。
DECLARE variable INT64;
SET variable = 5;
SELECT col1, value, time,
CASE
WHEN "Bla" = "Bla"
THEN MIN(value) OVER (PARTITION BY col1 ORDER BY time ROWS BETWEEN variable PRECEDING AND CURRENT ROW)
ELSE NULL
END
AS MinVal
FROM data
解决方案
您可以使用 execute immediate 来执行动态查询。例如。下面的查询在 over 子句中使用 var。
declare var int64 default 5;
execute immediate
'select min(1) over(order by street_number ROWS BETWEEN '||var||' PRECEDING AND CURRENT ROW) from' ||'`bigquery-public-data.austin_311.311_service_requests` limit 100'
推荐阅读
- css - 使用 localStorage 在页面重新加载后保持 css 样式反应
- javascript - playwright - 登录表单、输入和提交点击的问题
- maven - 詹金斯管道中的不可读POM
- c++ - C++ 模板函数以随机顺序接受参数
- node.js - 为什么我不能访问 httprequest 变量值?
- laravel - 我在子域上上传了 laravel 8,但收到错误
- javascript - 路由在 React JS 中无法正常工作
- tokenize - AttributeError:“GPT2TokenizerFast”对象没有属性“max_len”
- java - 使用 pyjnius 在 kivy 中获取传入号码
- django - 'str' 对象在 djangorestframework_simplejwt 上没有属性 'decode'