gpt4 book ai didi

clickhouse - 如何计算每 1 分钟或 1 天的日期时间,

转载 作者:行者123 更新时间:2023-12-03 16:14:01 33 4
gpt4 key购买 nike

我在 Clickhouse 有一张 table .用于保持统计数据和指标。

和结构是:

datetime|metric_name|metric_value

我想保留统计信息并限制 1 分钟、1 小时、1 天等的访问次数。所以我需要每个 metric_name 的最后一分钟、一小时或一天的事件计数,我想在图表中准备统计数据。

我不知道如何进行查询。我根据确切的时间(例如 1 分钟、1 小时、1 天等)获取指标统计信息的计数。

我曾经在 inflxdb 上工作:
SELECT SUM(value) FROM `TABLE` WHERE `metric_name`=`metric_value` AND time >= now() - 1h GROUP BY time(5m) fill(0)

事实上,我想在前 1 小时内每 5 分钟获得每个指标的数量。

我不知道如何使用聚合来解决这个问题

最佳答案

ClickHouse 具有用于生成日期/日期时间组桶的函数,例如 toStartOfWeek、toStartOfHour、toStartOfFiveMinute。您也可以使用 intDiv功能手动划分值范围。然而fill功能仍在路线图中。
比如你可以像这样在不填写ClickHouse的情况下重写influx sql,

SELECT SUM(value) FROM `TABLE` WHERE `metric_name`=`metric_value` AND 
time >= now() - 1h GROUP BY toStartOfFiveMinute(time)
你也可以引用这个讨论 https://github.com/yandex/ClickHouse/issues/379
更新
有一个 timeSlots可以帮助生成空桶的函数。这是一个工作示例
SELECT
slot,
metric_value_sum
FROM
(
SELECT
toStartOfFiveMinute(datetime) AS slot,
SUM(metric_value) AS metric_value_sum
FROM metrics
WHERE (metric_name = 'k1') AND (datetime >= (now() - toIntervalHour(1)))
GROUP BY slot
)
ANY RIGHT JOIN
(
SELECT arrayJoin(timeSlots(now() - toIntervalHour(1), toUInt32(3600), 300)) AS slot
) USING (slot)

关于clickhouse - 如何计算每 1 分钟或 1 天的日期时间,,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54007512/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com