谷歌BigQuery (BQ)允许您仅使用timestamp
或date
类型创建分区。
我的99%的数据都有一个非常清晰的选择器,idClient。我为我的客户创建了带有像idClient = code
这样的谓词的视图,所以隐私是有保证的。
这种策略的问题是,有些客户有5M行,其他客户有200K行,而且由于BQ
没有索引,它们总是在处理彼此的数据(而且成本还在上升)。
我打算创建一个timestamp
字段,其中每个客户都有一个不同的timestamp
,每个客户敏感的表中的每个插入都会重复该字段,因此我可以通过timestamp
进行查询,就像使用标准ID一样。
这有什么意义吗?如果BQ是一个索引数据库,我会担心数据倾斜,但因为它总是全表扫描,所以我认为我只会有好处,没有坏处。
发布于 2019-05-21 01:24:34
该问题的解决方案是向表中添加与其他数据库中的索引等效的聚类字段
此link提供了有关如何使用集群字段的基本信息
集群可以提高某些类型查询的性能,例如使用筛选器子句的查询和聚合数据的查询。当查询作业或装载作业将数据写入聚集表时,BigQuery将使用聚类列中的值对数据进行排序
注意:使用集群字段时,BigQuert dryRun不会显示成本改进,这只能在执行后才能看到
https://stackoverflow.com/questions/56224335
复制相似问题