在大查询中使用特殊字符后提取短语

时间:2017-06-16 14:42:40

标签: google-bigquery

请参阅以下示例中的一个短语
Start -> vendor-i (06/06/2017 09:07:18 PM) -> vendor-p (06/08/2017 04:44:47 PM) -> vendor-p (06/12/2017 11:32:33 AM) -> vendor-p (06/13/2017 04:49:47 PM)
从上述阶段开始,我需要将vendor-i作为新变量提取,然后将vendor-p作为另一个新变量 可能存在我只有一个供应商名称的情况。

我建立的代码是:
regexp_extract(GROUP_NAMES,r'([a-z\._]*)\.') as integrations, regexp_extract(GROUP_NAMES,r([vendor_que]) as vendor_que

请建议我们如何实现这一点,因为供应商名称可以出现在任何地方,因此我们也无法定义长度。

1 个答案:

答案 0 :(得分:2)

由于您需要所有名称,因此可以使用REGEXP_EXTRACT_ALL来获取它们的数组。例如,

#standardSQL
SELECT REGEXP_EXTRACT_ALL(GROUP_NAMES, r'-> ([^ ]+)')
FROM (
  SELECT 'Start -> vendor-i (06/06/2017 09:07:18 PM) -> vendor-p (06/08/2017 04:44:47 PM) -> vendor-p (06/12/2017 11:32:33 AM) -> vendor-p (06/13/2017 04:49:47 PM)' AS GROUP_NAMES
);

输出是数组["vendor-i", "vendor-p", "vendor-p", "vendor-p"]