Я работаю над динамическим запросом в BigQuery, который создаст x столбцов для каждой записи, которая передается через объект json.Я написал запрос, чтобы программно сгенерировать запрос, который будет иметь x столбцов, но я не знаю, как выполнить запрос на генерацию без копирования и вставки его в редакторе.Есть ли способ выполнить запрос, сгенерированный другим запросом?
Я знаю, что было бы возможно сгенерировать весь запрос на Python или любом другом языке программирования, но для этого конкретного случая использования я бы предпочел сохранить всев SQL.
Когда я выполняю этот запрос, он выводит сгенерированный запрос ниже.
with names_ids as (
SELECT
JSON_EXTRACT_SCALAR(json_text, '$.name') as name,
JSON_EXTRACT_SCALAR(json_text, '$.id') as id
FROM UNNEST([
'{"id": "123456", "name": "test 1"}',
'{"id": "789456", "name": "test 2"}',
'{"id": "456123", "name": "test 3"}'
]) as json_text
)
select
concat(
'select user_id, event_time, ',
string_agg(
concat(
' min(case when activity_id = ', json_extract(a.json_data, '$.id'), ' then 1 else end) as has_', lower(replace(json_extract_scalar(a.json_data, '$.name'), ' ', '_'))
)
)
) as query
from (
select to_json_string(a) as json_data
from names_ids as a
)
Вывод вышеуказанного запроса:
select user_id, event_time, min(case when activity_id = "123456" then 1 else end) as has_test_1, min(case when activity_id = "789456" then 1 else end) as has_test_2, min(case when activity_id = "456123" then 1 else end) as has_test_3
Как выполнить вывод вышеуказанного запроса?