Ich arbeite an AWS Athena, um Load Balancer-Protokolle zu filtern. Ich habe die folgende Tabelle erstellt und die Protokolle in die Tabelle importiert.Hive - Summe der zugehörigen Werte
CREATE EXTERNAL TABLE IF NOT EXISTS elb_logs (
request_timestamp string,
elb_response_code string,
url string,
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
'serialization.format' = '1','input.regex' = '([^ ]*) ([^ ]*) ([^ ]*):([0-9]*) ([^ ]*)[:\-]([0-9]*) ([-.0-9]*) ([-.0-9]*) ([-.0-9]*) (|[-0-9]*) (-|[-0-9]*) ([-0-9]*) ([-0-9]*) \\\"([^ ]*) ([^ ]*) (- |[^ ]*)\\\" (\"[^\"]*\") ([A-Z0-9-]+) ([A-Za-z0-9.-]*)$')
LOCATION 's3://athena-examples/elb/raw/';
Jetzt möchte ich die Zahl von 200 OK bekommen, 400 und 500 Antworten zählen. Also habe ich die folgende Abfrage ausgeführt.
SELECT distinct(elb_response_code),
count(url) AS count
FROM elb_logs
GROUP BY elb_response_code
Es funktionierte, aber es gibt alle Antworten zurück, wie unten.
**response count**
401 1270
201 1369
422 342
200 3568727
400 1221
404 444
304 10435
413 3
206 30
500 1542
Ich möchte für 2xx alle 400.401.404.413.422 und die gleiche Sache summieren, 3xx und 5xx So sollte das Ergebnis 4xx Summe (400.401.404.413.422)
**response count**
4xx 52145
2xx 1363224
5xx 532
Danke, es funktioniert, Ist es möglich, den Wert des Antwortcodes mit xx anzuzeigen. wie 2xx, 3xx im Ergebnisfenster? Gerade jetzt zeigt es 2,3,4,5. – SQLadmin
Siehe aktualisierte Antwort –
Awesome :), danke Dudu – SQLadmin