我应该怎么做才能从 Thingsboard 中正确删除“事件”条目?
据我所知,当前的 API 没有提供删除事件的方法。似乎唯一的方法是直接删除数据库中的记录。
顺便说一下,我使用 PostgreSQL 作为数据库。
在 Thingsboard 源代码中研究了两个小时后,我找到了解决方案。
日期包含在 V1 UUID 格式的 uid_event 字段中。
所以首先,您需要编写一个函数uuid_timestamp来将 UUID 转换为时间戳。我在这里找到了解决方案:https : //stackoverflow.com/a/24191574/5300212
CREATE FUNCTION uuid_timestamp(id uuid) RETURNS timestamptz AS $$
select TIMESTAMP WITH TIME ZONE 'epoch' +
(((('x' || lpad(split_part(id::text, '-', 1), 16, '0'))::bit(64)::bigint) +
(('x' || lpad(split_part(id::text, '-', 2), 16, '0'))::bit(64)::bigint << 32) +
((('x' || lpad(split_part(id::text, '-', 3), 16, '0'))::bit(64)::bigint&4095) << 48) - 122192928000000000) / 10000000 ) * INTERVAL '1 second';
$$ LANGUAGE SQL
IMMUTABLE
RETURNS NULL ON NULL INPUT;
Run Code Online (Sandbox Code Playgroud)
之后,要删除 30 天前的所有事件,您可以运行如下查询:
DELETE FROM public.event WHERE uuid_timestamp(event_uid::uuid) < now() - '30 days'::interval;
Run Code Online (Sandbox Code Playgroud)
你的假设是正确的。您将需要执行 SQL 脚本来清理“事件”表。我必须注意,对于 Cassandra DB,我们已经有了“cassandra.query.ts_key_value_ttl”和“cassandra.query.events_ttl”配置参数来自动执行此过程。
| 归档时间: |
|
| 查看次数: |
1955 次 |
| 最近记录: |