首页 > 解决方案 > 谷歌数据洞察中的 REGEXP_EXTRACT;继续“空”

问题描述

我在 Google 的 Data Studio 中创建报告,过去我已经成功地创建了几个自定义维度,使用REGEXP_MATCH维度Keyword结合CASE语句来创建我需要的维度。这个让我难住了。

我有数据通过Keyword包含我想提取并显示为自定义维度的子字符串的维度进入。

通过的关键字数据的子集如下所示:

09172018_rp_ws_1_og_
img s4_ac_p_act_
img s5_ws_5_m_
img s4_ws_5_m_

我正在尝试使用REGEXP_EXTRACT创建一个名为的新计算字段Image type,它是一个维度,它将所有条目分组,以 img 开头,后跟一个空格,然后是任何字母数字,然后以下划线结尾。因此,所有条目img s4都将被组合在一起,img s5将被组合在一起。关键字维度中没有该模式的任何内容都可以完全排除在数据集之外。

null除了使用之外,我无法获得任何结果REGEXP_EXTRACT

即使只是尝试REGEXP_EXTRACT(Keyword, '.*img.*')在输入新计算字段的公式时产生 null。

让我难过的是我尝试了以下操作,只是为了查看我的语法是否关闭,并且这个公式确实返回了结果(只是不是我想要的,因为图像类型没有聚合)。

CASE
  WHEN (REGEXP_MATCH(Keyword, '.*img.*')) THEN Keyword
  ELSE "Not Set"
END

知道我哪里出错了吗?REGEXP_EXTRACT(Keyword, 'your reg expression here')无论我输入什么,我都无法得到任何输出。

标签: regexgoogle-data-studiore2

解决方案


请注意,为了从中提取任何文本,您应该在正则表达式模式中REGEXP_EXTRACT定义一个捕获组。简而言之,用一对未转义的括号括起您需要提取的部分。

现在,要匹配img字符串的开头,您需要使用^锚点,它匹配字符串位置的开头。

要匹配 1 个或多个字符,请使用+.

因此,您可以根据您的实际规则使用以下任何一种:

REGEXP_EXTRACT(Keyword, '^img ([a-zA-Z0-9_]+)')
REGEXP_EXTRACT(Keyword, '^img\\s+(\\w+)')
REGEXP_EXTRACT(Keyword, '^img\\s+(.+)')

细节

  • ^- 字符串的开始
  • img - 文字子串
  • ([a-zA-Z0-9_]+)- 捕获组 1:一个或多个字母、数字或_
  • \s+- 1 个或多个空格
  • \w+- 1 个或多个单词字符:字母、数字或_
  • .+- 除换行符之外的 1 个或多个字符。

推荐阅读