最近,我们将数据从具有保留策略自动生成(默认)的度量“用户”迁移到保留策略六十天(sixty_days.users)。 因此,我们不再需要autogen.users中的数据。
我们如何在不损害60天用户的数据的情况下将其删除?
这是一个奇怪的行为,因为当我们向sixty_days.users中插入数据时,它不会应用于autogen.users,但是当我们尝试删除/删除时,它会将这两个数据都删除。
我们尝试按时间使用DROP和DELETE,但没有成功。
我们希望仅删除属于特定RT的测量中的数据。
答案 0 :(得分:2)
正如Nikolay Manolov在回答中提到的那样,您不能将保留策略指定为DELETE OR DROP命令的一部分。但是我们真的需要吗?
经过测试,我确认,您的问题与使用相同的度量名称以及不同的保留策略有关。因此,更好的技巧可能是使用“用户”以外的临时度量名称,直到您使用默认保留策略删除旧副本为止。
select * into "sixty_days".temp_user from "autogen".user group by *;
delete from user;
select * into "sixty_days".user from "sixty_days".temp_user group by *;
delete temp_user;
作为上述查询的一部分,您需要对子句进行分组,以避免默认情况下将标签转换为字段。
答案 1 :(得分:1)
不支持此功能,似乎仍然不支持。
DELETE影响所有保留策略的预期行为。而且,是的,它与SELECT不一致,例如您只能从特定的保留策略中进行选择。请参阅此https://docs.influxdata.com/influxdb/v1.7/query_language/database_management/#retention-policy-management
上的文档我想这不是一个非常好的解决方法,可以对数据应用一个connection_policy_tag,然后允许您从特定的保留策略中删除数据。
编辑:在您的情况下,由于数据已经存在,因此您无法应用标签。您可以通过以下方式进行迁移:将数据复制到临时度量中,清理,然后再将数据复制回去。另外,请等待60天,然后删除所有较旧的内容,直到您的数据被复制为止。