跨多个用户共享 BigQuery 的缓存

Sharing BigQuery's cache across multiple users

据我了解,BigQuery 的 caching 机制是基于每个用户的。但我们希望能够在 project/dataset/table 级别共享缓存。

例如,约翰和玛丽都在同一个 Google 项目 XYZ 上工作。他们喜欢使用 BigQuery,并且都查询数据集 Foo 中的 table Bar,即 XYZ:Foo.Bar,以从他们的数据中获得漂亮的见解。

John 登录并针对 XYZ:Foo.Bar 编写一个查询,该查询需要 10 秒才能执行。几分钟后,Mary 登录并在 XYZ:Foo.Bar 上编写了 完全 相同的查询。它也需要 10 秒,但她没有获得缓存命中。

是否可以采取任何措施来跨用户共享查询缓存,即在 project/dataset/table 级别?还是我错过了一些明显的东西?

出于隐私原因,BigQuery 不会在用户之间共享缓存 - 但建议提出一个有趣的功能请求:https://code.google.com/p/google-bigquery/

您今天可以实施的替代方案是使用服务帐户代表您的用户连接到 BigQuery 的代理。例如,使用 http://demo.redash.io. Same with Datalab 时您会获得 BigQuery 本机缓存和应用程序级缓存 - 因为它默认使用服务帐户,所以会为同一项目中的用户缓存结果。