Я ищу способ выполнить параметризованный запрос к ряду параметров в Google BigQuery параллельно, возможно ли это?
Например, я ищу что-то, что может выполнить что-то вроде приведенного ниже запроса:
WITH generic_query AS (
SELECT EXTRACT(DATE FROM start_date) as date
, COUNT(0) as total
FROM multi_tennant_visit_table
WHERE start_date BETWEEN @startDate AND @endDate
AND company_id = @companyId
)
Против фиксированных @startDate
и @endDate
, но некоторого вида массива @companyId
значений, и возвращают данные в виде структурированного ответа в следующем (JSON
) формате:
[
{
"company_id": "1",
"data": [
{
"date": "2019-01-01",
"total": "1431"
},
{
"date": "2019-01-02",
"total": "1876"
}
]
},
{
"company_id": "2",
"data": [
{
"date": "2019-01-01",
"total": "1431"
},
{
"date": "2019-01-02",
"total": "1876"
}
]
}
]
Однако это очень упрощенно, поскольку company_id
является иерархическим, поскольку посещение таблицы может быть связано с компанией и ее материнской компанией, а также с компаниями-материнскими компаниями и т. Д., Которые все обрабатываются вструктура уровней здесь не показана.
Кроме того, я хотел бы выполнить около 20 запросов таким образом, некоторые из них просты и могут быть переписаны для группирования по company_id
и ARRAY_AGG()
и * 1018. * используется в конечном итоге с форматом ответа, который я ищу, но некоторые просто не могут, поскольку они используют @companyId
в паре вложенных подзапросов, и мне нужно mainвозможность объяснения заинтересованным сторонам, т. е. это выполняет запрос, который мы имеем во всех областях, вот результаты.
Есть ли способ сделать это в большом запросе (в идеале, как один запрос), как я смотрюТысячи @company_id
значений и пара баз данных в ГБ / день, поэтому не нужно, чтобы расходы пошли по спирали.
Большое спасибо, если есть какие-либо дополнительные разъяснения, не стесняйтесь спрашивать
Обновление:
Я пытался преобразовать подзапрос в функцию, которая принимает company
в качестве переменной, но получаю следующую ошибку:
Коррелированные подзапросы, которые ссылаются на другие таблицы, не являютсяподдерживается, если они не могут быть декоррелированы, например, путем преобразования их в эффективное JOIN.