使用 SQL 或 Web UI 在 bigquery 中创建带有日期后缀的分区表



我想创建这样的表:

CREATE TABLE sometable
(SELECT columns, columns, date_col)
PARTITIONED BY date_col

我希望它与表中的日期后缀进行日期分区:sometable$date_partition

我阅读了文档,但无法使用 Web UI 或 SQL 完成此操作。

Web UI 显示此类错误"缺少参数 DATE 的参数"。

My table name is "daily_export_${DATE}"
My partitioning column isn't blank, it's date_col.

请问我能举一个简单的例子吗?

  • PARTITION BY更早
  • 查询需要将表后缀解析为DATE类型。

例如:

CREATE OR REPLACE TABLE temp.so
PARTITION BY date_from_table_name
AS
SELECT PARSE_DATE('%Y%m%d', _table_suffix) date_from_table_name, event_timestamp, event_name, items  
FROM `bingo-blast-174dd.analytics_151321511.events_*`
WHERE _table_suffix BETWEEN '20200530' AND '20200531'
LIMIT 10

正如您在本文档中看到的,BigQuery实现了两个不同的概念:分片表分区表

第一个(分片表(是一种将整个表划分为许多带有日期后缀的表的方法。可以单独查询这些表,也可以使用通配符查询这些表。例如,您可以创建许多名为events_20200101events_20200102、[...] 的表,而不是创建名为events的单个表。

执行此操作时,您可以单独查询这些表中的任何一个,也可以通过运行一些查询来查询所有这些表,例如select * from events_*

第二个概念(分区表(是一种将表分段为较小部分的方法,以便在查询数据时提高性能并降低成本。分区表可以基于表的某个列,甚至可以基于引入时间。按引入时间对表进行分区时,可以访问名为_PARTITIONTIME的伪列

在比较这两种方法时,文档说:

日期/时间戳分区表的性能优于分片表的性能 按日期。创建以日期命名的表时,BigQuery 必须维护 每个以日期命名的表的架构和元数据的副本。此外,当 使用日期命名的表,可能需要 BigQuery 进行验证 每个查询表的权限。这种做法还增加了查询 开销和影响查询性能。推荐的最佳实践 是使用日期/时间戳分区表而不是日期分片 表。

在您的情况下,您基本上需要创建一个名称中没有日期的分区表。

相关内容

  • 没有找到相关文章

最新更新