regex - 使用 REGEX Google Data Studio 替换完整的引荐来源网址
问题描述
我正在使用 Google Data Studio 创建一份分析特定推荐网站的报告。我的数据源是我的网站 Google Analytics。
我想用纯文本值(即页面名称一)替换完整推荐人(例如格式 webaddress.com/page-name-one),以便在报告中更清楚地看到我的图表中的哪个页面和桌子。
我在计算字段中使用了以下公式,但它们似乎都没有改变 Full Referrer 以匹配我需要的内容。Data Studio 也将它们都识别为有效公式。
我已经匿名了我的例子,但它具有相同的原则。我试过了:
REGEXP_REPLACE(Full Referrer,"[webaddress\\.com\\/page\\-name\\-one].*","Page name one")
REGEXP_REPLACE(Full Referrer, 'webaddress.com/page-name-one', 'Page name one')
REGEXP_REPLACE(Full Referrer, 'webaddress\\.com\\/page\\-name\\-one', 'Page name one')
REGEXP_REPLACE(Full Referrer, 'name', 'Page name one')
REGEXP_REPLACE(Full Referrer, 'page-name-one', 'Page name one')
REGEXP_REPLACE(Full Referrer, 'page\\-name\\-one', 'Page name one')
解决方案
在我自己的一个 GA 数据源上对此进行测试时,我能够使用您的一种模式来实现这一点:
REGEXP_REPLACE(Full Referrer,'webaddress.com/page-name-one','Page name one')
然而,应该注意的是,.
应该正确地转义(通过\
或将其包装在一个字符类中,如[.]
;有关详细信息,请参阅re2 语法)。因为您必须使用双反斜杠,所以我也更喜欢使用 Data Studio 从 BigQuery 借来的东西(某种未记录的功能),即正则表达式字符串类型(r""
或r''
)。使用它时,您只需要单反斜杠(除非您想要文字反斜杠):
REGEXP_REPLACE(Full Referrer,r'webaddress\.com/page-name-one','Page name one')
因为您使用的是REGEXP_REPLACE
,所以匹配字符串之前或之后的任何内容在替换之后仍然存在 - 这意味着对于“m.facebook.com/l”的完整推荐人,REGEXP_REPLACE(Full Referrer,r'facebook\.com','FB')
将返回“m.FB/l”
因此,您上面的模式将匹配字符串中任何位置的值,这可能不是您想要的。要将其锚定到开头,请使用^
(start of string) 断言:
REGEXP_REPLACE(Full Referrer,r'^webaddress\.com/page-name-one','Page name one')
如果您只想匹配Full Referrer 的确切值(即不包括任何其他路径级别),请确保也使用$
(end of string) 断言:
REGEXP_REPLACE(Full Referrer,r'^webaddress\.com/page-name-one$','Page name one')
请记住,如果您在数据源中作为计算字段执行此操作,您实际上并没有更改原始指标 - 您正在处理它的副本。因此,您需要将 Full Referrer 替换为您在数据源中命名计算字段的任何内容。
通常您希望为一堆站点或页面执行此操作,因此您可以在单个字段中使用CASE
和处理所有这些逻辑:REGEXP_MATCH
CASE
WHEN REGEXP_MATCH(Full Referrer,r'^webaddress\.com/page-name-one$') THEN 'Page name one'
WHEN REGEXP_MATCH(Full Referrer,r'^site2\.com/example$') THEN 'S2 Example'
ELSE Full Referrer
END
这些匹配是按顺序完成的,因此您甚至可以匹配一个或多个特定页面,然后仍然为该域上您不匹配的任何内容提供不同的值:
CASE
WHEN REGEXP_MATCH(Full Referrer,r'^site\.com/$') THEN 'Site - Home'
WHEN REGEXP_MATCH(Full Referrer,r'^site\.com/about$') THEN 'Site - About'
WHEN REGEXP_MATCH(Full Referrer,r'^site\.com/') THEN 'Site - (other)'
ELSE Full Referrer
END
ELSE
如果您想将所有不匹配的值存储到“其他”分组中,而不是仅仅保留原始值,您也可以使用。
另一件要记住的事情是,由于 GA 中的共享字段,诸如 Source ( utm_source
) 之类的内容也会出现在 中Full Referrer
,因此您可能会在那里看到您通常不会期望的值。通常,您还可以通过仅过滤到“推荐”的默认渠道分组来摆脱这些。
如果您的模式仍然不匹配,请使用一些其他详细信息更新问题,例如输出实际是什么,是否有错误消息等 - 以及您是否将其作为数据源中的计算字段执行或单个图表上的“创建字段”按钮。
推荐阅读
- python - 为什么 QTimer 在对象中不起作用?python PyQt
- python - 如何使用多处理更快地遍历列表数据?
- python - 如何使用变量访问 SQLAlchemy 表列?
- python - 如何使用 AWS ElasticBeanstalk 更改 wsgi.conf?
- sql - 当该行发生更改时,SQL Server 2016 更新表中该行的日期时间属性
- python - 根据字符串的一部分查找元素并获取值
- flask - 如何在centos服务器上部署flask?
- javascript - 使用ajax post发送json坐标
- android - 如果 firestore 无法保存数据会发生什么
- python - Python3 中的 list.remove(element) 奇怪行为