我该怎么做才能从Thingsboard中正确删除“事件”条目?
据我所知,当前的API没有提供删除事件的方法。似乎唯一的方法是直接删除数据库中的记录。
顺便说一句,我使用PostgreSQL作为数据库。
答案 0 :(得分:1)
在研究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;
之后,要删除30天之前的所有事件,可以运行如下查询:
DELETE FROM public.event WHERE uuid_timestamp(event_uid::uuid) < now() - '30 days'::interval;
答案 1 :(得分:0)
您的假设是正确的。您将需要执行SQL脚本来清理“事件”表。我必须注意,对于Cassandra DB,我们已经具有“ cassandra.query。ts_key_value_ttl”和“ cassandra.query.events_ttl”配置参数以使该过程自动化。