向InfluxDB写入时序数据前重复数据检测失效问题求助
向InfluxDB写入时序数据前重复数据检测失效问题求助
各位好,我现在遇到个头疼的问题:我需要把pandas DataFrame里的时序数据写入InfluxDB的Bucket,核心要求是写入每一行数据前先检查它是否已经存在于Bucket中,避免重复写入,但目前我的程序完全没法检测到已存在的重复数据——每次重复运行程序,本该触发的“检测到重复数据”提示根本不会出现,数据还是会被重复写入。
先给大家看一下我的数据源格式(DataFrame样例):
epoch,open,high,low,close,volume 1332374520.0,2.341,2.341,2.341,2.341,1.0 1332374700.0,2.343,2.343,2.343,2.343,1.0 1332374940.0,2.344,2.344,2.344,2.344,1.0 1332375420.0,2.344,2.344,2.344,2.344,2.0 1332375660.0,2.344,2.344,2.344,2.344,2.0 1332376080.0,2.344,2.344,2.344,2.344,1.0
这里的epoch是时间戳,是我判断数据是否重复的核心标识(理论上同一时间戳的行数据应该是唯一的)。
下面是我当前程序的开头部分(后面的逻辑主要是遍历DataFrame、尝试写入,但重复检测的逻辑没生效):
import os import pandas as pd from tqdm import tqdm from influxdb_client import InfluxDBClient, Point, WriteOptions from influxdb_client.client.write_api import SYNCHRONOUS # 后面的代码主要是初始化客户端、遍历DataFrame行、尝试检测重复后写入,但检测逻辑没起作用
我原本的思路是针对每一行的epoch时间戳,去InfluxDB里查询是否存在对应的数据点,但要么是查询逻辑写得有问题,要么是判断条件不对,导致完全没检测到重复。有没有大佬能指点一下:
- 正确的重复数据检测逻辑应该怎么写?
- 有没有更高效的方式(比如批量检测,而不是逐行查)来避免重复写入?
麻烦大家帮忙看看,谢谢!
备注:内容来源于stack exchange,提问作者p.luck
相关产品推荐
相关产品推荐

