BigQuery: как создать целочисленную секционированную таблицу через DML? - PullRequest
0 голосов
/ 17 февраля 2020

Я пытаюсь понять, как работают целочисленные секционированные таблицы. Однако до сих пор я не смог его создать.

Что не так с этим запросом:

 #standardSQL
 CREATE or Replace TABLE temp.test_int_partition

 PARTITION BY RANGE_BUCKET(id, GENERATE_ARRAY(0,100))
 OPTIONS(
   description="test int partition"
 ) 
as 

WITH data as (
SELECT 12 as id, 'Alex' as name
UNION ALL 
SELECT 23 as id, 'Chimp' as name
)

SELECT *
from data

Я получаю эту ошибку:

Error: PARTITION BY expression must be DATE(<timestamp_column>), a DATE column, or RANGE_BUCKET(<int64_column>, GENERATE_ARRAY(<int64_value>, <int64_value>, <int64_value>))

1 Ответ

0 голосов
/ 17 февраля 2020

Проблема в том, что несмотря на то, что GENERATE_ARRAY задокументировано как GENERATE_ARRAY(start_expression, end_expression [, step_expression]), что означает, что step_expression необязательно, для RANGE_BUCKET это обязательно .

Так будет работать следующее:

 #standardSQL
 CREATE or Replace TABLE temp.test_int_partition

 PARTITION BY RANGE_BUCKET(id, GENERATE_ARRAY(0,100,1))
 OPTIONS(
   description="test int partition"
 ) 
as 

WITH data as (
SELECT 12 as id, 'Alex' as name
UNION ALL 
SELECT 23 as id, 'Chimp' as name
)

SELECT *
from data
...