使用ruby gem的Bigquery通配符查询

时间:2017-02-09 10:20:35

标签: ruby google-bigquery wildcard

我使用了google-cloud-bigquery gem(版本0.20.2,目前无法升级)。

我有一个审核数据集,其中包含许多具有以下格式的表:

audit.some_table20170101
audit.some_table20170102 
audit.some_table20170103

等。

我正在尝试运行一个扫描所有这些表的查询,并给我字段some_field的最后一个值。

我的目的是使用表格通配符:

FROM audit.some_table*

并希望

SELECT LAST(some_field) AS last_some_field
  1. 使用Bigquery Web控制台时,我能够做到这一点 使用反引号(FROM`audit.some_table *`),但以编程方式对gem进行相同操作会导致Google :: Cloud :: InvalidArgumentError:invalid:无效的表名:`audit.some_table *`

  2. 即使在Web控制台中,当我尝试使用LAST命令时,它也需要使用旧版SQL,然后由于前一部分的反引号而产生错误。如果我禁用旧版sql,LAST将不再可用(不熟悉的命令),然后我必须按时间戳列降序排序并限制为1.

  3. 任何想法如何解决这些问题并能够使用上面提到的gem和版本进行查询?

1 个答案:

答案 0 :(得分:0)

LAST仅在有订单时才有意义。 BigQuery中的表没有继承顺序,如果运行SELECT * FROM table,每次都可能得到不同顺序的结果。因此,正确的做法是使用ORDER BY some_value DESC LIMIT 1构造。

wildcard tables确实只在标准SQL中可用,以获得与Legacy SQL类似的功能,您可以在FROM子句中使用TABLE_DATE_RANGE function