首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >导出BigQuery数据以供使用python进行分析

导出BigQuery数据以供使用python进行分析
EN

Stack Overflow用户
提问于 2018-01-30 05:25:34
回答 1查看 575关注 0票数 0

我是谷歌BigQuery的新手,所以我正在努力理解如何最好地完成我的用例。

我有每天的客户访问数据存储在BigQuery中,我希望用我用python编写的一些算法来分析这些数据。由于有多个脚本使用日常数据的子集,我想知道获取和临时存储数据的最佳方法是什么。此外,脚本以顺序的方式运行。每个脚本修改数据的某些列,随后的脚本使用这些修改过的数据。在所有脚本运行之后,我希望将修改后的数据存储回BigQuery。

我想到的一些办法是:

  1. 将bigquery表作为db文件导出到GAE (Google )实例中,并使用sqlite3 python软件包从db文件中查询每个脚本的相关数据。一旦所有脚本运行完毕,将修改后的表存储回BigQuery,然后从GAE实例中删除db文件。
  2. 每次我想使用google云python客户端库熊猫gbq包运行脚本时,都会从google云python客户端库熊猫gbq包查询数据。运行每个脚本后修改BigQuery表。

有人能知道哪一种方法能更好地实现这一目标(就效率/成本而言)或提出替代方案吗?

谢谢!

EN

回答 1

Stack Overflow用户

发布于 2018-01-30 10:59:09

您的问题的答案主要取决于您的用例和您将要处理的数据的大小,因此没有一个绝对和正确的答案。

但是,对于BigQuery的使用,以及在您描述的场景中,它的一些特性对您来说是如何有趣的,您可能需要考虑一些要点。

让我快速地介绍一下你应该看的主要主题:

  • 定价:将存储计费放在一边,集中于查询本身的成本(这与您的用例更相关),BigQuery计费是基于每个查询处理的字节数。每个月有1TB的免费配额,从那时起,每TB处理数据的成本为5美元,是最低可测量单位10 TB的数据。
  • 缓存:当BigQuery返回一些信息时,它被存储在一个临时缓存表中(如果您愿意的话),并且它们被维护大约24小时,除了在这个文档链接中可能发现的一些例外情况(它们也是最好的--努力,所以可能也会发生早期的删除)。从缓存表返回的结果不计费(因为根据计费的定义,成本是根据处理的字节数计算的,访问缓存的表意味着没有处理),只要您运行的是完全相同的查询。我认为这个特性值得一看,因为从您的句子“由于有多个脚本使用日常数据的子集”,可能(但只是在这里猜测)它适用于您的用例,只需执行一次查询,然后从缓存的版本中多次检索结果,而不必将其存储在其他任何地方。
  • 分区: BigQuery提供了分区表的概念,它是按日期将表划分为较小的部分的表,这将使每天根据需要查询数据变得更加容易。
  • 速度: BigQuery提供了一个实时分析平台,因此您将能够执行快速查询,检索所需的信息,并应用一些初始处理,您以后可以在定制的Python算法中使用这些处理。

因此,一般来说,我要说的是,您不需要将任何其他具有部分结果的数据库保留为BigQuery存储的一部分。在资源和成本效率方面,BigQuery提供了足够的特性,可以在本地处理数据,而不必处理数据检索中的巨大开销或延迟。但是,这最终将取决于您的用例以及您正在存储和需要同时处理的数据量;但总的来说,我将只使用BigQuery本身。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/48514422

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档