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 整数分区 - 我可以使用另一个查询的结果来获取要访问的分区列表吗?