我有一个要求,我在BigQuery(每小时分区)中有一个分区表,我必须编写一个批处理作业,一次处理一个分区。
在hive中,很容易做到这一点,就像我可以在主表和一个元数据表中显示分区一样,我可以在其中维护已处理的分区,然后使用Exception在两个数据集之间创建差异,以标识要处理的剩余分区。
在BigQuery中,我可以做一些类似于在主表上显示分区的事情,并维护一个元数据表,在该表中我可以维护已处理的分区。
我发现我可以在主桌上这样做
选择不同的FORMAT_DATETIME('%Y-%m-%d%H:%M:%S',提取(来自_PARTITIONTIME的数据))从DATASET.TABLE_NAME
但这将扫描整个表和成本的开销。
使用旧版 sql,您可以运行以下内容:
#legacySQL
SELECT
partition_id
FROM [project_id:dataset.table$__PARTITIONS_SUMMARY__]
请参阅此处有关分区汇总表的其他文档
这是为什么BigQuery在小数据集上表现不好的问题的后续问题。 假设我有一个大约1百万行的数据集。在我们当前使用的数据库(mysql)中,聚合查询的运行速度非常慢,可能需要大约10秒的时间进行复杂的聚合。在BigQuery上,所需的初始化时间可能会使此查询花费约3秒,比mysql要好,但如果我们需要在1s或更短时间内返回查询,则此工具不适合此作业。 那么,我的问题是,在对中等大小的数据集(如10
我有一个配置单元表保存在ORC文件中,这是“create”命令中的定义: 我想从末尾删除一个列,所以我尝试了“alter table-replace columns”命令,在这里我没有写列名--但是得到了这个错误:
我已经根据日期yyyy-mm-dd对配置单元表进行了分区。我想每天运行一个脚本,可以删除所有超过30天的分区,但在这种情况下,我不想超过日期。我希望它采取系统日期和删除超过30天的分区。
1-创建了源表 2-将数据从本地加载到源表 3-创建了另一个带有分区的表-partition_table 我不确定如何在外部表中进行分区。有人能帮我一步一步地描述一下吗?。