#google-bigquery
#google-bigquery
Вопрос:
Я хочу генерировать строки в таблице BigQuery, используя геометрическую последовательность. Например, у меня есть строки с первым термином и пределом. Я хочу заполнить каждую строку значениями, равными всем членам последовательности, меньшим предела. Соотношение является константой.
Возможно ли это сделать в BigQuery?
Ответ №1:
Ниже приведен пример для BigQuery Standard SQL
#standardSQL
WITH `project.dataset.table` AS (
SELECT 2 term, 60 max_value, 3 ratio
)
SELECT term, max_value, ratio,
sequence_pos,
CAST(FLOOR(term * POWER(ratio, sequence_pos)) AS INT64) sequence_value,
FROM `project.dataset.table`,
UNNEST(GENERATE_ARRAY(0, CAST(FLOOR(LOG(max_value/term) / LOG(ratio)) AS INT64))) sequence_pos
ORDER BY sequence_pos
с выводом
Row term max_value ratio sequence_pos sequence_value
1 2 60 3 0 2
2 2 60 3 1 6
3 2 60 3 2 18
4 2 60 3 3 54
Должно быть легко расширить выше для любого вашего реального варианта использования