如何删除influxDB中的一个点

这几乎肯定是重复的,但我无法将这些信息放在一起。


如何从 influxDB 中删除一个点?首先我使用 Python 和DataFrameClient:


client = DataFrameClient('localhost', '8086', 'root', 'root', 'meteo')

然后我写了多个点,如:


meta = pd.DataFrame({'path': ['A'],

                     'table': ['B'],

                     'md5': ['C']},

                     index=[pd.datetime.now()])

client.write_points(dataframe=meta,

                    measurement='__SRC__',

                    protocol='line',

                    database='meteo')

现在我想删除所有点,哪里path是'A'. 我尝试使用client.query:


DELETE FROM "meteo"."autogen"."__SRC__" WHERE path='A'


> received status code 400 from server: err: error parsing query:

>     retention policy not supported at line 1, char 1

现在这条消息可能是有意义的,但是你能帮我解决我做错了什么以及在哪里阅读吗?万分感谢!


更新

按照@JanGaraj 的回答,我有更多的结果。以下查询(我有一个变量。table而不是path但不会看到这有什么不同。)


client = influxdb.DataFrameClient('localhost', '8086', 'root', 'root', 'meteo')

client.query('DELETE  FROM "__SRC__" WHERE table=\'A\'')

回报


ResultSet({})

但不会删除任何内容(SELECT * FROM "__SRC__" WHERE table=\'A\'我得到 4 个数据点)。


DELETE  FROM "__SRC__" WHERE table='A'放入 Chronograf的相同查询 ( ) 给出“找不到数据库:”,这是有道理的,但我不知道如何修复它。


江户川乱折腾
浏览 456回答 3
3回答

慕沐林林

首先,根据DELETE规范,您实际上无法删除单个点 - 您删除一系列中的所有点。在实践中,在这种情况下,您可以将标签视为一个系列(过于简化,但在这里有效)。标签是DELETE定义一个受到影响的系列所需要的 - 从来没有值!换句话说,你可以指定只在您的标签WHERE。现在,我从这个 Py 库 doc(-) 得到的,DataFrame被认为是一组值,而不是标签。这正是它不起作用的原因:您应该将您的path(并且很可能table也考虑此处的基数)放入标签(调用中的单独参数),而不是值。然后它会起作用,但问题是 - 为什么你需要删除这些点?你能回答这个问题吗?-) 这件事真的很恶心,我必须承认,不知道你们是怎么忍受的,而不是立即逃到一些更人性化的设计和文档化的库和语言中

神不在的星期二

尝试查询:DELETE FROM "__SRC__" WHERE path='A'在这种情况下,FROM 部分不支持 DB 和保留策略 - 请参阅InfluxDB DELETE 文档。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python