Comparativa periodo actual vs anterior por URL
Compara el rendimiento de cada URL entre los últimos 14 días y los 14 días anteriores. Permite generar un reporte de variación de tráfico por página para detectar mejoras o caídas.
-- Comparativa de URLs: últimos 14 días vs 14 días anteriores
WITH datos AS (
SELECT
url,
CASE
WHEN data_date >= DATE_SUB(CURRENT_DATE(), INTERVAL 14 DAY) THEN 'actual'
ELSE 'anterior'
END AS periodo,
clicks,
impressions,
sum_top_position
FROM
`your-project.searchconsole.searchdata_url_impression`
WHERE
data_date BETWEEN DATE_SUB(CURRENT_DATE(), INTERVAL 28 DAY) AND CURRENT_DATE()
AND search_type = 'WEB'
)
SELECT
url,
SUM(IF(periodo = 'anterior', clicks, 0)) AS clics_anterior,
SUM(IF(periodo = 'actual', clicks, 0)) AS clics_actual,
SUM(IF(periodo = 'actual', clicks, 0)) - SUM(IF(periodo = 'anterior', clicks, 0)) AS dif_clics,
ROUND(SAFE_DIVIDE(
SUM(IF(periodo = 'actual', clicks, 0)) - SUM(IF(periodo = 'anterior', clicks, 0)),
SUM(IF(periodo = 'anterior', clicks, 0))
) * 100, 2) AS variacion_clics_pct,
ROUND(SAFE_DIVIDE(
SUM(IF(periodo = 'anterior', sum_top_position + impressions, 0)),
SUM(IF(periodo = 'anterior', impressions, 0))
), 2) AS pos_anterior,
ROUND(SAFE_DIVIDE(
SUM(IF(periodo = 'actual', sum_top_position + impressions, 0)),
SUM(IF(periodo = 'actual', impressions, 0))
), 2) AS pos_actual
FROM
datos
GROUP BY
url
HAVING
clics_anterior >= 10
ORDER BY
dif_clics ASC
LIMIT 50
Explicación paso a paso
- 5 Clasifica cada fila en periodo 'actual' o 'anterior' según si la fecha cae en los últimos 14 días o los 14 previos.
- 20 Usa IF condicional dentro de SUM para separar métricas de cada periodo en columnas distintas.
- 23 SAFE_DIVIDE calcula la variación porcentual evitando errores cuando el periodo anterior no tiene datos.
- 27 Calcula la posición media de cada periodo por separado usando la fórmula correcta del export GSC.
- 39 Filtra URLs con al menos 10 clics en el periodo anterior para excluir páginas con tráfico marginal.
- 41 Ordena por diferencia de clics ascendente para mostrar primero las mayores caídas.
Ejemplo de resultado esperado
| url | clics_anterior | clics_actual | dif_clics | variacion_clics_pct | pos_anterior | pos_actual |
|---|---|---|---|---|---|---|
| https://ejemplo.com/guia-antigua | 234 | 87 | -147 | -62.82 | 4.20 | 8.50 |
| https://ejemplo.com/blog/post-2024 | 187 | 123 | -64 | -34.22 | 5.10 | 6.30 |
| https://ejemplo.com/herramientas | 145 | 98 | -47 | -32.41 | 3.80 | 5.20 |
Variaciones y adaptaciones
Para ver las URLs que más crecieron, cambiar ORDER BY a dif_clics DESC. Para comparar meses completos, ajustar a INTERVAL 30 DAY e INTERVAL 60 DAY. Para incluir también el cambio de impresiones, añadir columnas de impresiones por periodo con la misma lógica.
Queries relacionadas
Keywords con muchas impresiones y bajo CTR
GSC en BigQuery
Intermedio
Detección de canibalización de keywords entre URLs
GSC en BigQuery
Avanzado
Top 100 keywords por clics en los últimos 28 días
GSC en BigQuery
Principiante
Evolución de posición media de keywords objetivo
GSC en BigQuery
Intermedio