Bigquery 整数范围分区

Posted

技术标签:

【中文标题】Bigquery 整数范围分区【英文标题】:Bigquery Integer range partitioning 【发布时间】:2019-12-19 12:39:47 【问题描述】:

我有一个连接到维度表的事实表(维度表有 1600 万条记录),为了优化连接,使用 基于 SK 字段对维度表进行分区是否理想?

既然维度表有 1600 万条记录,那么有效连接到这个维度的最佳方法是什么?

谢谢

【问题讨论】:

您认为慢或加入效率的当前时间是多少? 【参考方案1】:

我会建议你集群,而不是分区 - 特别是因为你没有指出 id 的范围以及它会如何随时间变化。

但是,我用 2000 万条记录测试了一种查询模式,在这种规模上,无论是集群还是什么都不用都没有优势:

CREATE TABLE temp.lookup_clustered
PARTITION BY fake_date 
CLUSTER BY id
AS
SELECT FARM_FINGERPRINT(FORMAT('%t%t%t',date, wban,stn)) id, *
FROM `fh-bigquery.weather_gsod.all` 
WHERE name<'C'
;
CREATE TABLE temp.lookup_plain
AS
SELECT FARM_FINGERPRINT(FORMAT('%t%t%t',date, wban,stn)) id, *
FROM `fh-bigquery.weather_gsod.all` 
WHERE name<'C'
;
CREATE TABLE temp.ids AS 
SELECT id FROM temp.lookup_plain
;

SELECT MAX(temp) 
FROM (SELECT id FROM temp.ids LIMIT 1000 )
JOIN `temp.lookup_clustered`
USING(id) 
# 2.1 sec elapsed, 440.2 MB processed
# Slot time consumed 32.846 sec
# Bytes shuffled 26.51 KB
;

SELECT MAX(temp) 
FROM (SELECT id FROM temp.ids LIMIT 1000 )
JOIN `temp.lookup_plain`
USING(id) 
# 1.8 sec elapsed, 440.2 MB processed
# Slot time consumed 34.740 sec
# Bytes shuffled 26.39 KB

使用类似的脚本来测试您的用例的最佳策略(问题中缺少这些策略)。并请报告结果!

【讨论】:

以上是关于Bigquery 整数范围分区的主要内容,如果未能解决你的问题,请参考以下文章

在 Bigquery 中使用 Job Config 创建范围分区表

BigQuery 整数分区 - 我可以使用另一个查询的结果来获取要访问的分区列表吗?

在列出的日期范围之外流式传输到分区表 BigQuery

JavaScript 中的 BigQuery 用户定义函数不会修剪分区

BigQuery、日期分区表和装饰器

BigQuery:计算每日分区表中的平均值