在 Google Big Query 中使用 bq 命令行执行查询
Posted
技术标签:
【中文标题】在 Google Big Query 中使用 bq 命令行执行查询【英文标题】:Executing the query using bq command line in Google Big Query 【发布时间】:2016-07-21 19:42:59 【问题描述】:我使用下面的 Python 脚本执行查询,表格中填充了 2,564,691 行。当我使用 Google Big Query 控制台运行相同的查询时,它返回 17,379,353 行(查询原样)。我想知道下面的脚本是否有问题。不确定 bq 查询中的 --replace 是否替换过去的结果集而不是附加到它。
任何帮助将不胜感激。
dateToday = (time.strftime("%Y/%m/%d"))
dateToday1 = dateToday.replace('/','')
commandStr = "type C:\Users\query.txt | bq query --allow_large_results --replace --destination_table table:dataset1_%s -n 1" %(dateToday1)
【问题讨论】:
如果您愿意共享这两个作业的作业 ID,我们(BigQuery 团队)可以进一步调查,看看这两个查询之间可能有什么不同。 通过 Web UI 运行的查询的作业 ID:red-road-574:bquijob_64bd407c_1560f071d85 能否通过命令行分享查询的ID? @DannyKitt:通过命令行查询的作业 id 是 bqjob_r5790ceea_000001560fdd5e9b_1 我查看了您的工作详情:这两个查询并不完全相同。两个查询的结构相同,但 bqjob_r5790ceea_000001560fdd5e9b_1 通过CURRENT_TIMESTAMP
引用 20160721 表(因为它在 20160721 上运行),而 red-road-574:bquijob_64bd407c_1560f071d85 显式引用 20160719 表。
【参考方案1】:
在 Web UI 中,您可以使用“查询历史记录”选项导航到相应的查询。 找到它们后 - 您可以展开相应的条目并查看究竟执行了什么查询 我非常确定,只要比较查询文本,您就会立即看到“差异”的来源!
添加
在查询历史记录中 - 您不仅可以看到查询文本,还可以看到用于相应查询的所有配置属性 - 例如 Write Preference
等。因此,即使查询文本相同,您也可以看到配置的潜在差异,这将为您提供线索
【讨论】:
查询完全一样。我上面提到的脚本每 10 分钟运行一次并填充表格。当我为昨天的日期运行脚本时,它返回相同的行数。但是当我检查昨天表格中的行数(昨天由脚本填充)时,有很大的不同。这就是为什么我想知道 --replace 是否会做出任何改变。 查看 Danny Kitt 对该问题的评论:它们不是同一个查询(结构相同,扫描的表不同)以上是关于在 Google Big Query 中使用 bq 命令行执行查询的主要内容,如果未能解决你的问题,请参考以下文章