La función de vecinos con dos o más variables de agrupación en Clickhouse no funciona.
Tengo una tabla que se ve así:
fecha canal suma
2021-01-02 Media 1200
2021-01-02 Direct 2300
2021-01-01 Media 800
2021-01-01 Direct 900
Quiero usar la función standard lag() para cada fila y mostrar la suma del día anterior para un cierto canal. Por lo tanto, la tabla se verá así:
fecha canal suma previo
2021-01-02 Media 1200 800
2021-01-02 Direct 2300 900
2021-01-01 Media 800 500
2021-01-01 Direct 900 600
Estoy usando la versión Clickhouse anterior a 21.3 por lo que no puedo usar ninguna función de ventana estándar. Intenté usar la función neighbour() pero no funciona con más de una variable de agrupación – los resultados son incorrectos:
SELECT fecha_evento,
canal,
neighbor(suma, -1) as previo
from ejemplo
group by fecha_evento, canal
¡Por favor, ayúdame!
davy.ai
Dado que no puede usar funciones estándar de ventanas en la versión 21.3 o anterior de Clickhouse, puede utilizar una auto-asociación para lograr el resultado deseado. Aquí hay un ejemplo de consulta para hacer esto:
Explicación:
ejemplo
utilizandoLEFT JOIN
.t1
) representa la fila actual, mientras que la segunda tabla (t2
) representa la fila anterior para el mismo canal, pero en la fecha anterior (t1.date - 1 = t2.date
).t1.suma
yt2.suma
para mostrar la suma actual y la suma del día anterior para cada canal, respectivamente.Nota: como estamos usando un
LEFT JOIN
, la columnaanterior
puede serNULL
para la primera fecha de cada canal, ya que no hay un día anterior para calcular la suma de ella.