Google Big Query,将遗留 sql 转换为标准 sql

问题描述

我正在尝试将 Legacysql 查询转换为 Standardsql

SELECT  * FROM 
TABLE_QUERY([prod-chap_out],'REGEXP_MATCH(table_id,r"OUT\d+$")') 

查询在 Legacy sql 中运行良好,但在 API 中使用时无法转换为 json 响应。我宁愿将其序列化为 json,也不必处理一堆数据表并转换值。

如何将其转换为标准sql

我试过了

REGEXP_CONTAINS(table_id,r"OUT\d+$"))

但我收到错误 \d 是非法字符。

解决方法

您可以在 * 中使用通配符 FROM,并在 _table_suffix 中使用生成的伪列 WHERE

SELECT
  * 
FROM 
  `<project-id>.<dataset-id>.<table-prefix>*`
WHERE 
  REGEXP_MATCH(_table_suffix,r"OUT\d+$") 

我不完全确定你的表名是什么样的 - 这里是关于过渡到标准 SQL 的官方文档:https://cloud.google.com/bigquery/docs/reference/standard-sql/wildcard-table-reference#the_table_query_function