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

Google bigquery 使用SQL或web UI在bigquery中创建带有日期后缀的分区表,google-bigquery,Google Bigquery,我想创建这样的表: CREATE TABLE sometable (SELECT columns, columns, date_col) PARTITIONED BY date_col 我希望它是用表中的日期后缀进行日期分区的:sometable$date\u分区 我阅读了文档,但既不能用web UI也不能用SQL来完成 web UI显示这样的错误“参数日期缺少参数” 我能举个简单的例子吗? 分区依据更早 查询需要将表后缀解析为DATE类型 例如: 创建或替换表temp.so 从表名称按日期

我想创建这样的表:

CREATE TABLE sometable
(SELECT columns, columns, date_col)
PARTITIONED BY date_col
我希望它是用表中的日期后缀进行日期分区的:sometable$date\u分区

我阅读了文档,但既不能用web UI也不能用SQL来完成

web UI显示这样的错误“参数日期缺少参数”

我能举个简单的例子吗?

  • 分区依据
    更早
  • 查询需要将表后缀解析为
    DATE
    类型
例如:

创建或替换表temp.so
从表名称按日期划分
作为
从\u表\u名称、事件\u时间戳、事件\u名称、项目中选择分析\u日期('%Y%m%d',\u表\u后缀)
来自“bingo-blast-174dd.analytics_151321511.events”_*`
其中_table_后缀在'20200530'和'20200531'之间
限制10
  • 分区依据
    更早
  • 查询需要将表后缀解析为
    DATE
    类型
例如:

创建或替换表temp.so
从表名称按日期划分
作为
从\u表\u名称、事件\u时间戳、事件\u名称、项目中选择分析\u日期('%Y%m%d',\u表\u后缀)
来自“bingo-blast-174dd.analytics_151321511.events”_*`
其中_table_后缀在'20200530'和'20200531'之间
限制10
如您所见,
BigQuery
实现了两个不同的概念:分片表分区表

第一种方法(分片表)是将整个表划分为多个带有日期后缀的表的方法。您可以单独或使用通配符查询这些表。例如,您可以创建多个名为events_20200101、events_20200102、[…]的表,而不是创建一个名为events的表
当您这样做时,您可以单独查询这些表中的任何一个,也可以通过运行一些查询来查询所有这些表,如
select*from events.

第二个概念(分区表)是一种在查询数据时将表分割成更小的片段以提高性能和降低成本的方法。分区表可以基于表的某些列,甚至基于摄取时间。当您按摄取时间对表进行分区时,您可以访问名为
\u PARTITIONTIME

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

日期/时间戳分区表的性能优于分片表 按日期。创建日期命名表时,BigQuery必须维护 每个名为表的日期的架构和元数据的副本。还有,什么时候 如果使用了日期命名表,则可能需要BigQuery进行验证 每个查询表的权限。这种做法也增加了查询的难度 开销和影响查询性能。建议的最佳做法 是使用日期/时间戳分区表而不是日期分片表 桌子

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

如您所见,
BigQuery
实现了两个不同的概念:分片表分区表

第一种方法(分片表)是将整个表划分为多个带有日期后缀的表的方法。您可以单独或使用通配符查询这些表。例如,您可以创建多个名为events_20200101、events_20200102、[…]的表,而不是创建一个名为events的表
当您这样做时,您可以单独查询这些表中的任何一个,也可以通过运行一些查询来查询所有这些表,如
select*from events.

第二个概念(分区表)是一种在查询数据时将表分割成更小的片段以提高性能和降低成本的方法。分区表可以基于表的某些列,甚至基于摄取时间。当您按摄取时间对表进行分区时,您可以访问名为
\u PARTITIONTIME

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

日期/时间戳分区表的性能优于分片表 按日期。创建日期命名表时,BigQuery必须维护 每个名为表的日期的架构和元数据的副本。还有,什么时候 如果使用了日期命名表,则可能需要BigQuery进行验证 每个查询表的权限。这种做法也增加了查询的难度 开销和影响查询性能。建议的最佳做法 是使用日期/时间戳分区表而不是日期分片表 桌子


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

您所指的是哪个提到“${date}”语法的文档?顺便说一句,sometable$date\u partition是一个表名,它带有一个分区装饰器,用于处理表中的分区。无法创建名为“sometable$20200101”的表。您可以创建一个名为“sometable”的表,并在表中创建一个分区“20200101”。我认为您将分片表与分区表混合在一起。你能看一下这份文件,再解释一下你想做什么吗?是的,我把它们混合在一起,谢谢你的信息。你的问题被回答了吗?如果答案是有用的,考虑接受和投票吧。您可以通过单击✓ 然后点击▲您指的是哪一个提到“${DATE}”语法的文档?顺便说一句,sometable$date\u partition是一个表名,它带有一个分区装饰器,用于处理表中的分区。无法创建名为“sometable$20200101”的表。您可以创建一个名为“sometable”的表,并在表中创建一个分区“20200101”。我认为您将分片表与分区表混合在一起。你能看一下这份文件,再解释一下你想做什么吗?是的,我把它们混合在一起,谢谢你的信息。你的问题被回答了吗?如果答案是有用的,考虑接受和投票吧。你
My table name is "daily_export_${DATE}"
My partitioning column isn't blank, it's date_col.