google-bigquery - 语法错误:应为“)”,但在 [62:23] 获得标识符“ciclos”
问题描述
我尝试进行 2 次转换,如下所示:
select TIME_DIFF(TIME ciclos.hora_inicio, TIME ciclos.hora_fin, MINUTE) as diferencia from
(select
split(split(document_name, '/ciclos/')[OFFSET(1)], '/eventos/')[OFFSET(0)] as id_ciclo,
REPLACE(JSON_EXTRACT(data, '$.codigo'), '"', '') as codigo,
REPLACE(JSON_EXTRACT(data, '$.hora_fin'), '"', '') as hora_fin,
REPLACE(JSON_EXTRACT(data, '$.hora_inicio'), '"', '') as hora_inicio,
from `fleetpas-34c3d.eventos.flet_raw_changelog`
where document_id = 'XPr9cyA9yn3U51rvRANQ'
) as ciclos
https://roboquery.com/app/syntax-time-diff-function-bigquery
解决方案
改为使用以下(BigQuery 标准 SQL)
TIME_DIFF(PARSE_TIME('%T', ciclos.hora_inicio), PARSE_TIME('%T', ciclos.hora_fin), MINUTE)
注意:假设(根据您的评论) hora_inicio 和 hora_fin 的格式类似于 '06:45:18'