Расчетное поле Google Data Studio / Запрос на помощь REGEX

Я использовал Google Data Studio, чтобы объединить большую карту сайта веб-сайта, содержащую URL-адрес страницы, с данные об эффективности Google Analytics для тех же URL страниц за пять лет. Сейчас я пытаюсь определить глубину навигации каждого из этих URL-адресов на основе их длины и количества косых черт в URL-адресе (/). Глубина навигации равна 0 для домашней страницы и 1 для страниц под ней и т. Д.

У меня есть фрагмент кода, над которым я работаю, чтобы сделать это:

LENGTH(REGEXP_REPLACE(Page, "[^\\/]/g", "")) - 1

Вкратце, если я правильно понимаю код, который я собрал, я пытаюсь идентифицировать все символы в значении Page, которые не являются косой чертой (/), и, используя REGEXP_REPLACE, заменяю их на (ничего), оставляя по существу только прямую оставшиеся косые черты, а затем подсчет их длины, чтобы определить их количество и, следовательно, глубину навигации минус 1, чтобы удалить первый во всех URL-адресах страницы. /g - это глобальная переменная, которую я включил, потому что она не работает иначе в создателях REGEX, которые я использовал для тестирования кода. Двойное экранирование \\ - это особенность Google Data Studio, насколько я могу судить.

Рассматриваемое поле содержит данные, которые выглядят следующим образом:

/testing-data/page-123/page-321/name-of-page/

Мой код должен привести к результату 4 (5-1), но в настоящее время он дает 1.


person Richard Martin    schedule 31.03.2021    source источник


Ответы (2)


Приведенное ниже вычисляемое поле выполняет трюк, где / представляет искомую фразу:

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

Редактируемый отчет Google Data Studio (встроенный Google Sheets Data Source) и GIF для уточнения:

person Nimantha    schedule 31.03.2021

Оказалось, что у меня сработал следующий вариант кода:

LENGTH(REGEXP_REPLACE(Page, "[^/]", "")) - 1

Проблема, с которой я столкнулся, которая привела к установке значения на 1, была, по-видимому, не из-за вычисления, а из-за настройки в поле Calculated, поскольку оно вводилось в разделе Blended Data в Google Data Studio. Он переносил его как Count Unique вместо простого типа данных Sum. В результате он правильно вычислял число в уравнении REGEX, а не в таблице, которую я просматривал.

Я попытался запустить код, который вы предоставили @Nimantha, и это тоже сработало. Так,

Есть два ответа:

DIVIDE((LENGTH(All Characters) - LENGTH(All Characters Excluding /)) , LENGTH(of /)-1

а также

LENGTH(REGEXP_REPLACE(Page, "[^/]", "")) - 1

Спасибо, что пнули меня в правильном направлении. Как только я понял, что причиной не могут быть два логических фрагмента кода, я стал искать причину в другом месте. Очень признателен.

person Richard Martin    schedule 31.03.2021