按日期分区?

Dav*_*ith 5 google-bigquery

我们正在尝试使用BigQuery来分析我们的软件应用程序生成的用户数据.

我们的工作表包含数亿行,每行代表一个唯一的用户"会话".每个包含时间戳,UUID和其他字段,描述用户在该会话期间与我们的产品的交互.我们目前每天生成大约2GB的数据(~10M行).

我们经常会对整个数据集运行查询(现在大约需要2个月,并且还在增长),但是典型的查询只会跨越一天,一周或一个月.我们发现随着表格的增长,我们的单日查询变得越来越昂贵(正如我们所期望的那样,给予BigQuery架构)

查询我们数据子集的最佳方法是什么?我能想到的一种方法是按天(或周,月等)将数据"分区"到单独的表中,然后在联合中一起查询它们:

SELECT foo from mytable_2012-09-01, mytable_2012-09-02, mytable_2012-09-03;

有没有比这更好的方法???

Mic*_*hri 1

您好,大卫:处理此问题的最佳方法是将数据分片到多个表中,并按照您在示例中建议的方式运行查询。

更清楚地说,BigQuery 没有索引的概念(在设计上),因此将数据分片到单独的表中是保持查询尽可能经济高效的有用策略。

另一方面,对于担心表太多的人来说,另一个有用的功能是为表设置一个过期时间,在此之后表将被删除并回收其存储 - 否则它们将无限期地保留。