Создание расширенного сегмента в BigQuery - PullRequest
0 голосов
/ 10 июля 2019

Я пытаюсь создать анализ пути страницы пользователя для пользователей, которые выполнили определенное действие события во время сеанса. До сих пор мне удавалось создавать пути к страницам для всех пользователей, но сейчас я пытаюсь создать дополнительный анализ путей для пользователей, которые связались.

Я старался изо всех сил найти решения, используя предложение where, но все привело к 0 результатам, показывающим

SELECT t.page_path,
        t.second_page_path,
        t.third_page_path,
        t.fourth_page_path,
        #concact the 4 pages together with a hyphen if a next page exists
        CONCAT(t.page_path,IF(t.second_page_path IS NULL,'','*'),
        IFNULL(t.second_page_path,''),IF(t.third_page_path IS NULL,'','*'),
        IFNULL(t.third_page_path,''),IF(t.fourth_page_path IS NULL,'','*'),
        IFNULL(t.fourth_page_path,'')) AS full_page_journey,
        #Count total sessions that went down that path after landing
        count(sessionId) AS total_sessions
FROM (
SELECT
  CONCAT(fullVisitorId,'-', CAST(visitStartTime AS STRING)) AS sessionId,
  hits.hitNumber as hitsya,
 (SELECT x.value FROM UNNEST(hits.customDimensions) x WHERE x.index = 22) as page_path,  
  LEAD((SELECT x.value FROM UNNEST(hits.customDimensions) x WHERE x.index = 22)) OVER (PARTITION BY fullVisitorId, visitStartTime ORDER BY hits.hitNumber) AS second_page_path,
  LEAD((SELECT x.value FROM UNNEST(hits.customDimensions) x WHERE x.index = 22),2) OVER (PARTITION BY fullVisitorId, visitStartTime ORDER BY hits.hitNumber) AS third_page_path,
  LEAD((SELECT x.value FROM UNNEST(hits.customDimensions) x WHERE x.index = 22),3) OVER (PARTITION BY fullVisitorId, visitStartTime ORDER BY hits.hitNumber) AS fourth_page_path
FROM
  `PROJECT_NAME.ga_sessions_*`,
  UNNEST(hits) AS hits
WHERE
  _TABLE_SUFFIX BETWEEN '20190501'
  AND '20190505'
  AND hits.type='PAGE'
  AND REGEXP_CONTAINS(hits.eventInfo.eventAction, r'Contact Us Submission'))t
 WHERE t.hitsya=1
     #Group by page of hit and all subsequent pages
     GROUP BY t.page_path,
              t.second_page_path,
              t.third_page_path,
              t.fourth_page_path,
              full_page_journey
     ORDER BY total_sessions DESC

Я ожидаю получить только сеансы, в которых это событие содержало

1 Ответ

1 голос
/ 11 июля 2019

Вы получаете 0 результатов, потому что ваши условия противоречат:

WHERE
  _TABLE_SUFFIX BETWEEN '20190501'
  AND '20190505'
  AND hits.type='PAGE'
  AND REGEXP_CONTAINS(hits.eventInfo.eventAction, r'Contact Us Submission'))t

Вы не можете иметь hits.type='PAGE' и ожидать значение в hits.eventInfo.eventAction.Это поле содержит только значения для hits.type='EVENT'

Если вы хотите сеансы с этим событием, найдите его, используя подзапрос на протяжении всего сеанса:

WHERE
  _TABLE_SUFFIX BETWEEN '20190501'
  AND '20190505'
  AND hits.type='PAGE'
  AND (SELECT COUNT(1)>0 
   FROM unnest(hits) 
   WHERE REGEXP_CONTAINS(hits.eventInfo.eventAction, r'Contact Us Submission') )
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...