# #sql #google-bigquery
Вопрос:
Я готовлюсь к отображению данных из data-studio через соединитель bigquery.
В bigquery я буду передавать значение параметра durationvalue типа int. На основе значения параметра,
Мне нужно выполнить различные инструкции sql, динамически создав строку, содержащую запрос, и, наконец, вернуть любой из результатов. Поэтому я использую выражение case для разных значений и ключевое слово EXECUTE для выполнения
declare durationvalue int64 default 1; -- this is the parameter i need to declare in data-stuido
declare query string default ""; -- this is just a variable for processing
with a as
(
SELECT * ..
),
b as
(SELECT * ..
),
f as
(
SELECT case when durationvalue=1
THEN
query="SELECT * from a where timestamp between ...." --dynamically create a string amp;
EXECUTE query --dynamically execute the dynamic string but here i get the error
when durationvalue=2
query="SELECT * from a where timestamp between ...." --dynamically create a string amp;
EXECUTE query
END
)
SELECT * from f --this is the result i want to display as report data
После запуска этого я получаю ошибку:
Syntax error: Unexpected identifier "query" at [30:1]
Я также пробовал ВЫПОЛНИТЬ НЕМЕДЛЕННО и тоже не работал над этим
EXECUTE IMMEDIATE query
Syntax error: Expected keyword ELSE or keyword END but got keyword EXECUTE at [29:1]
Я не уверен, как это исправить или реализовать. Кто-нибудь может, пожалуйста, помочь?