2

因此,我在Google App Engine上使用java开发了后端API。该API用于通过在BigQuery上运行查询来返回实时统计信息。如何让我的客户将BigQuery查询结果导出为CSV

我还开发了AngularJS中的前端,它与后端API进行通信,并允许用户登录和查看聚合统计信息。

我想让我的用户从BigQuery(直接通过我的前端应用程序)以CSV格式导出数据。

我不确定实现该目标的最佳方法是什么。非常感谢您的帮助。

+0

也许我应该提到,我需要一个可扩展的解决方案。导出到GCS每天仅限于1000次出口,所以我不太喜欢这个选项。此外,我希望我的用户导出的数据可能包含高达数百万条记录。 – shadyhossin

回答

3

我能看到你做两件之一这个方式,根据您的需要:

  1. 运行在CSV格式的export job to Google Cloud Storage,然后从GCS下载导出CSV。

  2. tabledata.list API读取数据,在服务器上将fv格式转换为CSV并创建可下载的CSV文件。

我可能会推荐第一个选项。导出作业可能会更好地扩展,因为对于大表来说,它们通常比对tabledata.list的重复调用更高效。它还避免了编写自定义代码将数据转换为CSV的需要。

+0

其实我们也需要一个替代方案,因为它需要很长时间。查询需要2分钟,但导出100行需要1-2分钟。这会在3-4分钟内结束,这太长了,并被要求改进它。你还有其他建议吗? – Pentium10

+0

与BigQuery中的大多数操作一样,导出作业未针对少量行进行优化。目前正在开展工作来提高出口工作的速度,但现在处于早期阶段,我无法提供ETA。鉴于目前的BigQuery系统,上面的建议是我能想到的最好的。在你的情况下,只有100行,使用tabledata.list的性能可能会更好。 –

1

导出到GCS是我们的缩放解决方案,也许您可​​以联系团队为您提供一些特殊配额。 tabledata.list返回的直接CSV输出即将被弃用,另一种方法是使用bq cli的头部命令--format = csv,但这不是一个缩放解决方案。