【问题标题】:BigQuery: How to create integer partitioned table via DML?BigQuery:如何通过 DML 创建整数分区表?
【发布时间】:2020-06-01 05:03:47
【问题描述】:

我试图了解整数分区表是如何工作的。然而,到目前为止,我无法创建一个。

这个查询有什么问题:

 #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>))

【问题讨论】:

    标签: google-bigquery partition integer-partition


    【解决方案1】:

    问题在于,尽管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
    

    【讨论】:

    • 是的。在我尝试输入可选参数后它起作用了
    • 接下来的两天我不能
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-27
    • 2018-05-29
    • 2019-05-02
    • 1970-01-01
    相关资源
    最近更新 更多