Как генерировать строки в BigQuery по геометрической последовательности?

#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   
  

Должно быть легко расширить выше для любого вашего реального варианта использования