问题描述
我使用 Google Data Studio 将包含页面 URL 的大型网站站点地图与五年前相同页面 URL 的 Google Analytics 性能数据结合起来。我现在试图根据每个 URL 的长度和 URL (/
) 中的正斜杠数量来识别它们的导航深度。主页的导航深度为 0,其下的页面为 1,以此类推。
LENGTH(REGEXP_REPLACE(Page,"[^\\/]/g","")) - 1
简而言之,如果我正确理解了我拼凑的代码,我会尝试识别 Page
值中所有不是正斜杠 (/
) 的字符并使用 {{1} },将它们替换为 REGEXP_REPLACE
(nothing),基本上只剩下正斜杠,然后计算它们的长度以确定有多少,因此导航深度减去 1 以删除所有页面 URL 中的第一个。
是我包含的全局变量,因为它在我用来测试代码的 REGEX 创建者中不起作用。据我所知,双重转义 /g
是 Google Data Studio 的一个特殊性。
有问题的字段包含如下所示的数据:
\\
我的代码应该导致结果 /testing-data/page-123/page-321/name-of-page/
(5-1) 但目前导致 4
。
解决方法
下面的 Calculated Field 的作用是使 /
代表正在搜索的词组:
DIVIDE((LENGTH(Page) - LENGTH(REGEXP_REPLACE(Page,"/",""))),LENGTH("/"))-1
为了分解上述内容,使用伪代码(和字符串 /testing-data/page-123/page-321/name-of-page/
):
DIVIDE((LENGTH(All Characters) - LENGTH(All Characters Excluding /)),LENGTH(of /)-1
关于计算,每个阶段的值将是:
DIVIDE((45 - 40),1)-1
Editable Google Data Studio Report(嵌入式 Google Sheets 数据源)和 GIF 详细说明:
,事实证明,我使用的代码的以下变体有效:
LENGTH(REGEXP_REPLACE(Page,"[^/]","")) - 1
我遇到的导致值被设置为 1 的问题显然不是因为计算,而是因为计算字段的设置,因为它被引入 Google Data Studio 的混合数据部分。它一直将其作为“Count Unique”而不是简单的 Sum 数据类型。结果,它在 REGEX 方程中正确计算了数字,只是不在我查看的表格中。
我尝试运行您提供的@Nimantha 代码,并且效果很好。所以,
有两个答案:
DIVIDE((LENGTH(All Characters) - LENGTH(All Characters Excluding /)),LENGTH(of /)-1
和
LENGTH(REGEXP_REPLACE(Page,"")) - 1
谢谢你把我踢到了正确的方向。一旦我意识到两个逻辑代码片段不可能是原因,我就在别处寻找原因。非常感谢。