google-bigquery - BigQuery @run_date 用作不同的类型
问题描述
@run_date
我有一个使用BigQuery中的参数的预定查询。
SELECT
@run_date AS run_date,
timestamp,
event
FROM
`ops-data.usage.full_user_dataset`
WHERE
DATE(timestamp) < @run_date
timestamp
是类型TIMESTAMP
我无法安排它 - 安排选项在新 UI 中显示为灰色,并且在经典 UI 中不可用(它说它需要有效的 SQL)。如果我尝试运行查询,则会收到错误消息Undeclared parameter 'run_date' is used assuming different types (DATE vs INT64) at [2:3]
在尝试了各种事情之后,我能够安排下面的查询。这个想法是强制 BigQuery 将 @run_date 视为日期而不更改它
SELECT
DATE_SUB(@run_date, INTERVAL 0 DAY) AS run_date,
timestamp,
event
FROM
`ops-data.usage.full_user_dataset`
WHERE
DATE(timestamp) < @run_date
为什么会发生此错误,为什么修复有效?
解决方案
我认为这是一个错误@run_date
,下面的解决方法应该对你有用,直到它被修复。
DECLARE run_date DATE DEFAULT @run_date;
SELECT
run_date,
timestamp,
event
FROM
`ops-data.usage.full_user_dataset`
WHERE
DATE(timestamp) < run_date
顺便说一句,由于解决方法使用脚本并且无法设置目标表,因此如果您确实需要目标表,则必须将其编写为:
CREATE OR REPLACE TABLE <yourDestinationTable>
AS SELECT ... -- your query
推荐阅读
- python - 使用 Pytorch 在同一 GPU 上的进程之间共享 GPU 内存
- java - Spring中的Around Annotation
- swift - 了解可逃避的闭包
- server - 如何设置 JetBrains YouTrack 以在带有 IIS 服务器的 Windows 8 LAN 上工作
- deep-learning - yoloV3 重新计算锚点
- jquery - 无法从 json 文件中提取不同的数组名称
- typescript - TS 获取变量类型
- javascript - 如何手动创建和打开引导下拉菜单?
- php - JSON回复包含额外的数组?
- python - Plotly:如何根据周期绘制时间图?