#sql #google-bigquery
#sql #google-bigquery
Вопрос:
Я использую [это] [1] в качестве ссылки, и я придумал этот скрипт:
bq --location=US query --use_legacy_sql=False
--parameter = 'ts_value:TIMESTAMP:TIMESTAMP_SUB(TIMESTAMP(DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)),interval 5 hour)'
--parameter = 'ts_value2:TIMESTAMP:TIMESTAMP_SUB(TIMESTAMP(DATE_SUB(CURRENT_DATE(), INTERVAL 2 DAY)),interval 5 hour)'
'with base_query as (
select * from table1 t1
inner join table2 t2
on
t1._id = t2.table1_id
where mydate >= @ts_value2 and mydate <@ts_value
),
another_query as (
select * from table3
where this_Date = @ts_value
)
select bq.*,aq.*;'
но это выдает мне ошибку
Ответ №1:
Что я делаю не так?
Вы пытаетесь добавить логику функции SQL в свои параметры, которые должны содержать буквальное значение.
Я бы изменил это:
--parameter = 'ts_value:TIMESTAMP:TIMESTAMP_SUB(TIMESTAMP(DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)),interval 5 hour)'
К этому:
--parameter = 'ts_value:INT64:5'
И ваш запрос, для @ts_value
, к этому:
with base_query as (
select * from table1 t1
inner join table2 t2
on
t1._id = t2.table1_id
where mydate >= @ts_value2 and mydate < TIMESTAMP_SUB(TIMESTAMP(DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY)),interval @ts_value hour)
),
another_query as (
select * from table3
where this_Date = @ts_value
)
select bq.*,aq.*;
Примечание: Вам также необходимо добавить другую переменную, чтобы получить полностью рабочий SQL
Комментарии:
1. @Abdullah, надеюсь, мой ответ помог вам в SO — вы можете отметить принятый ответ, используя галочку слева от опубликованного ответа, под голосованием. Смотрите meta.stackexchange.com/questions/5234 /… почему это важно!