Saltar al contenido
Roman Prokashev.

Este es un archivo del blog Last Click City, publicado en lastclick.city entre 2019 y 2024.

2 min de lectura

Ruta de página inversa en Google BigQuery.

La exportación de Google Analytics a BigQuery es una de las herramientas más potentes, y puede mostrarte hasta tres de los pasos previos a la consecución de un objetivo. Pero, para mi sorpresa, no existe la opción de obtener un informe similar que muestre las principales rutas inversas hacia una página concreta. Sin duda, informes así resultan útiles en muchos casos en los que hay que analizar el recorrido del usuario hasta una página determinada. Vamos a construirlo con BigQuery.

Paso 1. Seleccionar todos los hits para agruparlos después.

Primero seleccionamos todos los hits necesarios. Fíjate en que solo elegimos las vistas de página, porque vamos a hacer un análisis a nivel de página. Todos los hits se agrupan por fullvisitorID y se ordenan por la marca de tiempo del hit.

    SELECT
      fullvisitorID,
      FORMAT_TIMESTAMP("%Y-%m-%d %H:%M:%S", TIMESTAMP_SECONDS(SAFE_CAST(visitStartTime+hits.time/1000 AS INT64))) AS hit_timestamp,
      hits.page.pagePath AS pagePath,
    FROM
      `pro-tracker-id.ga_sessions_*`,
      UNNEST(hits) AS hits
    WHERE
      hits.type = "PAGE"
    ORDER BY
      fullvisitorID,
      hit_timestamp
Paso 2. Seleccionar la segunda y la tercera vista de página del recorrido del usuario.

En la segunda consulta usamos la función LEAD … OVER para crear columnas nuevas que muestren la segunda y la tercera página visitadas. PARTITION BY fullvisitorID ayuda a insertar «null» cuando no hay una página siguiente; en ese caso, la fila siguiente empezará con el recorrido del usuario siguiente. Las filas también se ordenan por hit_timestamp.

  SELECT
    fullvisitorID,
    hit_timestamp,
    pagePath,
    LEAD (pagePath, 1) OVER (PARTITION BY fullvisitorID ORDER BY hit_timestamp) AS second_pagePath,
    LEAD (pagePath, 2) OVER (PARTITION BY fullvisitorID ORDER BY hit_timestamp) AS third_pagePath
  FROM (
    SELECT
      fullvisitorID,
      FORMAT_TIMESTAMP("%Y-%m-%d %H:%M:%S", TIMESTAMP_SECONDS(SAFE_CAST(visitStartTime+hits.time/1000 AS INT64))) AS hit_timestamp,
      hits.page.pagePath AS pagePath,
    FROM
      `pro-tracker-id.ga_sessions_*`,
      UNNEST(hits) AS hits
    WHERE
      hits.type = "PAGE"
    ORDER BY
      fullvisitorID,
      hit_timestamp)
  ORDER BY
    fullvisitorID,
    hit_timestamp
Paso 3. Calcular las principales rutas hasta la página objetivo.

En el último paso seleccionamos la primera, la segunda y la tercera página visitadas y calculamos las rutas más populares hasta la página analizada con ayuda de la función COUNT. La consulta final quedaría así:

SELECT
  pagePath,
  second_pagePath,
  third_pagePath,
  COUNT(*) AS count
FROM (
  SELECT
    fullvisitorID,
    hit_timestamp,
    pagePath,
    LEAD (pagePath, 1) OVER (PARTITION BY fullvisitorID ORDER BY hit_timestamp) AS second_pagePath,
    LEAD (pagePath, 2) OVER (PARTITION BY fullvisitorID ORDER BY hit_timestamp) AS third_pagePath
  FROM (
    SELECT
      fullvisitorID,
      FORMAT_TIMESTAMP("%Y-%m-%d %H:%M:%S", TIMESTAMP_SECONDS(SAFE_CAST(visitStartTime+hits.time/1000 AS INT64))) AS hit_timestamp,
      hits.page.pagePath AS pagePath,
    FROM
      `pro-tracker-id.ga_sessions_*`,
      UNNEST(hits) AS hits
    WHERE
      hits.type = "PAGE"
    ORDER BY
      fullvisitorID,
      hit_timestamp)
  ORDER BY
    fullvisitorID,
    hit_timestamp)
WHERE
  third_pagePath = "/idea/"
GROUP BY
  pagePath,
  second_pagePath,
  third_pagePath
ORDER BY
  count DESC

Agradezco cualquier comentario, así que si tienes algo que aportar sobre la solución propuesta, no dudes en dejarlo en la sección de comentarios.

Traducido del inglés con Claude.

← Volver a Last Click City