0

我正在使用以下属性(示例)将测量值存储在 Timestream 中:

@2021-01-04 00:00:00 | DIMENSIONS                 | MEASURES
                     | domain: www.foo.com        | uniq_users: 9
                     | layer: none                | request_count: 11
                     | status: successful         | bytes_sent: 18097
                     | cache_status: Hit          |

让我们假设这些指标每天编写一个。我如何必须查询数据才能获得特定域的请求计数指标的每月总和?

为了获得整个查询时间范围的总和,我可以这样做:

WITH per_day AS (
    SELECT 
       time, 
       domain,
       measure_value::double AS request_count
    FROM 
        "database"."table"
    WHERE 
        time between '2021-01-01 00:00:00' and '2022-01-01 00:00:00'
        AND measure_name = 'request_count'
        AND domain = 'www.foo.com'
    ORDER BY time ASC
)
SELECT sum(request_count)
AS total
FROM per_day

这将返回指定范围的总和。有没有办法获得每月的总额(通过GROUP BY或类似方式)?

4

1 回答 1

1

date_trunc您可以使用大多数 SQL 语言(包括 AWS Timestream )将时间戳截断为不同的精度。

在您的情况下,您希望截断time到每月精度:date_trunc('month', time). 然后,您可以按此变量和 sum 分组request_count

SELECT 
   date_trunc('month', time) AS month, 
   SUM(measure_value::double) AS request_count
FROM 
    "database"."table"
WHERE 
    time between '2022-01-01 00:00:00' and '2022-01-02 00:00:00'
    AND measure_name = 'request_count'
    AND domain = 'www.foo.com'
GROUP BY 1
ORDER BY month ASC
于 2022-02-03T16:25:13.993 回答