BigQuery REGEXP_REPLACE

Posted

技术标签:

【中文标题】BigQuery REGEXP_REPLACE【英文标题】: 【发布时间】:2017-12-19 10:12:32 【问题描述】:

我有一个查询被定义为;

var query = " SELECT " +
            "REGEXP_REPLACE(TRIM(destination_value), r'[^\d]+', '') " +
            "FROM table1";
console.log(query,'query');
bigquery.query(query, function(err, rows) 
            if (err === null) 
                return resolve(rows);
            else
                return reject(err);
            
            );

当我打印它返回的查询时

SELECT REGEXP_REPLACE(TRIM(destination_value), r'[d]+', '') FROM `table1`;

为什么我的查询中的特殊字符在我控制台时不存在?有什么我做错了吗?

提前致谢。

【问题讨论】:

您的费率很低。对 SO 很重要,您必须使用已发布答案左侧、投票下方的勾号来标记已接受的答案。这将提高您的费率。通过访问此链接了解其工作原理:meta.***.com/questions/5234/… 【参考方案1】:

您需要对正则表达式元字符\d 中的反斜杠进行双重转义,因为第一个反斜杠将被 javascript 使用。请尝试以下操作:

var query = "SELECT " +
            "REGEXP_REPLACE(TRIM(destination_value), r'[\^\\d]+', '') " +
            "FROM table1";

我不认为^ 也需要转义,但我已经这样做了,因为这个字符似乎也引起了问题。您可以在下面的演示中验证查询是否正确打印。

Demo

【讨论】:

以上是关于BigQuery REGEXP_REPLACE的主要内容,如果未能解决你的问题,请参考以下文章

数据处理 - BigQuery 与 Data Proc+BigQuery

BigQuery:写入查询结果时使用 bigquery 作业的意外行为

Google BigQuery - 将数据流式传输到 BigQuery

Python BigQuery 脚本 bigquery.jobs.create 错误

阻止用户删除 BigQuery 表

Bigquery:在 Bigquery 中计算余额或重写 SQL 脚本