让我们假设我在BigQuery中有一个1TB数据集,我希望能够在柱状视图中查看数据,限制为1000个结果。以下是我可能会使用的一些查询:
1. SELECT * FROM mytable LIMIT 1000
2. SELECT first_name, last_name FROM mytable LIMIT 1000
3. SELECT last_name, first_name FROM mytable LIMIT 1000
4. SELECT * FROM mytable ORDER BY first_name LIMIT 1000
如果我运行这四个查询,我将收取约20美元($ 5 / tb,假装*
= first_name,last_name)。这似乎是一个非常高的数量来收集数据 - 有没有另一种方法来查询这些数据,以查看有限的数据视图,如上所述?
答案 0 :(得分:7)
这似乎是一个非常高的数额,只需采样数据 - 还有另一种方式
如果您的数据动态,意义每天更新或以其他方式更新 - 您可以使用Table Decorators
例如
SELECT * FROM mytable@-3600000--1800000 LIMIT 1000
只会查询过去一小时内插入的数据,从而大大降低了成本!!
另一种选择是使用Day partitioned tables,这样您只能查询特定日期的数据
有没有办法导出数据的子集而不是进行查询?
是。您可以使用Tabledata.list API列出原始表中的逐页数据,并使用您需要的任何采样逻辑插入到新的[samples]表中。注意:这个API是免费的,因为它实际上并没有使用BigQuery查询引擎本身,而是从底层存储中读取!所以你可以合理地狂野:o)
当然,您需要在您选择的client中实现此功能。
答案 1 :(得分:3)
我假设您通过在线查询界面(https://bigquery.cloud.google.com/table ...)访问BQ。
单击数据集中的表格。下到它所说的位置"表格细节"在"运行查询"下方以粗体字母显示图标。
在下面的第二行中,这是"预览"的选项。这将向您显示一些数据并且它是免费的。
答案 2 :(得分:0)
我们每天都在工作中生成一个示例表,我觉得这对许多任务非常有用。它很简单:
SELECT * FROM mytable WHERE RAND() < 0.01
该表是分层的,并且该采样被设置为再现整个结构;因此,可以以完全相同的形式测试/复制查询,然后在需要时将其交换到大表。 1%的样本适用于层次结构的顶层(意味着您不必怀疑是否从分支机构获得有效结果)。
对于我们来说,有足够的数据表明总和和比率通常非常具有代表性。唯一一种造成重大问题的数据是相对罕见的事件,这意味着可以依赖独特元素的数量。
当然,在制作此表后每日一次收费后,结算费用从美元到美分!