问题描述
我正在尝试将 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