【问题标题】:count(distinct request_ip) GROUP by datecount(distinct request_ip) 按日期分组
【发布时间】:2021-06-03 15:43:41
【问题描述】:

我有以下 SQL,我使用 AWS Athena 来处理存储在 S3 中的 AWS ELB 日志。

SELECT count(distinct request_ip) AS
 count,
 request_ip,
 DATE(from_iso8601_timestamp(timestamp)) AS date
FROM "default"."aws_elb_logs"
WHERE request_ip = '10.0.2.1'
GROUP BY request_ip, DATE(from_iso8601_timestamp(timestamp))

当我运行查询时,我得到

request_ip  total   date
1   10.0.2.1    1   2020-12-24
2   10.0.2.1    1   2020-12-25

我如何计算 IP 总数并按日期对特定 IP 进行分组?

非常感谢任何建议

【问题讨论】:

  • 我迷路了。第一列应始终为1。计算“特定 IP 的总 IP 数……”是什么意思?样本数据、期望的结果和清晰的解释都会有所帮助。

标签: sql amazon-athena


【解决方案1】:

试试这个脚本。

SELECT count(request_ip) AS count,
       DATE(from_iso8601_timestamp(timestamp)) AS date
FROM "default"."aws_elb_logs"
WHERE request_ip = '10.0.2.1'
GROUP BY DATE(from_iso8601_timestamp(timestamp))

【讨论】:

    【解决方案2】:

    通过更改时间戳尝试此查询并执行此操作

    雅典娜查询:

     SELECT distinct request_ip, count() as count from elb_logs
     WHERE parse_datetime(timestamp,'yyyy-MM-dd''T''HH:mm:ss.SSSSSS''Z') 
     BETWEEN parse_datetime('2020-12-24-00:00:00','yyyy-MM-dd-HH:mm:ss')AND parse_datetime('2020-12-25-12:00:00','yyyy-MM-dd-HH:mm:ss')GROUP by request_ip
     ORDER by count() DESC;
    

    这将给出 request_Ip 的总计数和对 lb 的命中计数

    输出例如:

       request_ip     count    
    1   10.0.2.1        5    
    2   10.0.2.1        10    
    

    【讨论】:

      猜你喜欢
      • 2017-04-13
      • 2021-11-04
      • 2011-02-19
      • 1970-01-01
      • 1970-01-01
      • 2021-06-05
      • 2021-09-30
      • 2012-05-28
      • 2011-12-30
      相关资源
      最近更新 更多