我的数据无法进行日期分区,如何使用群集?

ths*_*art 0 clustered-index google-bigquery partition

目前,我正在使用以下查询:SELECT ID,Key FROM mydataset.mytable ,其中ID = 100077113?和Key ='06019'

我的数据有1亿行:

ID-唯一

钥匙-可以拥有约10,000个钥匙

如果我知道查找ID的键,则可以在大约10,000行上完成,并且工作更快,并且处理的数据更少。

如何在BigQuery中使用新的集群功能来对字段Key进行分区?

Fel*_*ffa 5

(我将总结并扩展Mikhail,Pentium10和Pavan所说的内容)

我有一个表,其中包含12M行和76 GB的数据。该表没有时间戳列。

这是对表进行聚类的方法-在为分区创建假日期列时:

CREATE TABLE `fh-bigquery.public_dump.github_java_clustered` 
  (id STRING, size INT64, content STRING, binary BOOL
   , copies INT64, sample_repo_name STRING, sample_path STRING
   , fake_date DATE) 
PARTITION BY fake_date 
CLUSTER BY id AS (
  SELECT *, DATE('1980-01-01') fake_date 
  FROM `fh-bigquery.github_extracts.contents_java`
)
Run Code Online (Sandbox Code Playgroud)

奏效了吗?

# original table

SELECT *
FROM `fh-bigquery.github_extracts.contents_java`
WHERE id='be26cfc2bd3e21821e4a27ec7796316e8d7fb0f3'

(3.3s elapsed, 72.1 GB processed)


# clustered table

SELECT *
FROM `fh-bigquery.public_dump.github_java_clustered2`
WHERE id='be26cfc2bd3e21821e4a27ec7796316e8d7fb0f3'
(2.4s elapsed, 232 MB processed)
Run Code Online (Sandbox Code Playgroud)

我在这里学到了什么:

  • 群集可以使用唯一的ID,即使对于没有日期进行分区的表也是如此。
  • 最好使用假日期而不是空日期(但仅限于现在-应该加以改进)。
  • 通过ID查找行时,群集使我的查询便宜99.6%!

了解更多:https//medium.com/@hoffa/bigquery-optimized-cluster-your-tables-65e2f684594b