En los ejemplos de esta sección se incluyen consultas que utilizan valores de fecha y hora.
ejemplo : devolver el campo de marca de tiempo en formato ISO 8601 legible por humanos
La siguiente consulta utiliza las funciones from_unixtime
y to_iso8601
para devolver el campo timestamp
en formato ISO 8601 legible por humanos (por ejemplo, 2019-12-13T23:40:12.000Z
en lugar de 1576280412771
). La consulta devuelve también el nombre de origen HTTP, el ID de origen y la solicitud.
SELECT to_iso8601(from_unixtime(timestamp / 1000)) as time_ISO_8601,
httpsourcename,
httpsourceid,
httprequest
FROM waf_logs
LIMIT 10;
ejemplo : devolver registros de las últimas 24 horas
La siguiente consulta utiliza un filtro en el cláusula WHERE
para devolver el nombre de origen HTTP, el ID de origen HTTP y los campos de solicitud HTTP para los registros de las últimas 24 horas.
SELECT to_iso8601(from_unixtime(timestamp/1000)) AS time_ISO_8601,
httpsourcename,
httpsourceid,
httprequest
FROM waf_logs
WHERE from_unixtime(timestamp/1000) > now() - interval '1' day
LIMIT 10;
ejemplo : devolver registros para un intervalo de fechas y una dirección IP especificados
En la siguiente consulta, se enumeran los registros de un intervalo de fechas especificado para una dirección IP de cliente especificada.
SELECT *
FROM waf_logs
WHERE httprequest.clientip='53.21.198.66' AND "date" >= '2021/03/01' AND "date" < '2021/03/31'
ejemplo : contar el número de direcciones IP en intervalos de cinco minutos para un intervalo de fechas especificado
La siguiente consulta cuenta el número de direcciones IP en intervalos de cinco minutos para un intervalo de fechas determinado.
WITH test_dataset AS
(SELECT
format_datetime(from_unixtime((timestamp/1000) - ((minute(from_unixtime(timestamp / 1000))%5) * 60)),'yyyy-MM-dd HH:mm') AS five_minutes_ts,
"httprequest"."clientip"
FROM waf_logs
WHERE "date" >= '2021/03/01' AND "date" < '2021/03/31')
SELECT five_minutes_ts,"clientip",count(*) ip_count
FROM test_dataset
GROUP BY five_minutes_ts,"clientip"
ejemplo : contar el número de IP X-Forwarded-For en los últimos 10 días
En la siguiente consulta se filtran los encabezados de la solicitud y se cuenta el número de IP de X-Forwarded-For de los últimos 10 días.
WITH test_dataset AS
(SELECT header
FROM waf_logs
CROSS JOIN UNNEST (httprequest.headers) AS t(header)
WHERE from_unixtime("timestamp"/1000) > now() - interval '10' DAY)
SELECT header.value AS ip,
count(*) AS COUNT
FROM test_dataset
WHERE header.name='X-Forwarded-For'
GROUP BY header.value
ORDER BY COUNT DESC
Para obtener más información sobre las funciones de fecha y hora, consulte Funciones y operadores de fecha y hora