Consulta con la fecha y hora
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