You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Lambda函数删除DynamoDB中属性名为时间戳的旧数据?

解决方案建议

1. 设备ID过滤+排除30天以上数据

SQL数据库查询场景

假设数据表包含device_id(设备ID)、record_time(记录时间)字段,直接用SQL语句添加过滤条件:

SELECT * 
FROM your_table
WHERE device_id = '指定设备ID'
  AND record_time >= DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY);

若记录时间是UNIX时间戳格式,调整为:

SELECT * 
FROM your_table
WHERE device_id = '指定设备ID'
  AND record_time >= UNIX_TIMESTAMP(DATE_SUB(CURRENT_DATE(), INTERVAL 30 DAY));

Python Pandas处理场景

假设数据已读取为DataFrame,执行以下过滤操作:

import pandas as pd
from datetime import datetime, timedelta

# 替换为你的目标设备ID
target_device = "指定设备ID"
# 计算30天前的时间节点
cutoff_time = datetime.now() - timedelta(days=30)

# 先确保时间列是datetime类型(如果是字符串格式)
df["record_time"] = pd.to_datetime(df["record_time"])

# 双条件过滤
filtered_data = df[(df["device_id"] == target_device) & (df["record_time"] >= cutoff_time)]

2. 按属性名过滤数据的方法

SQL(属性存储为JSON字段)

如果属性存在JSON类型字段(如attributes),用JSON函数筛选:

-- MySQL示例:保留包含"humidity"属性的记录
SELECT *
FROM your_table
WHERE JSON_EXTRACT(attributes, '$.humidity') IS NOT NULL;

Python Pandas(属性为字典/JSON列)

若DataFrame的attributes列是字典类型,通过以下方式筛选:

# 筛选包含指定属性名的记录
has_target_attr = df[df["attributes"].apply(lambda x: "目标属性名" in x)]

# 筛选该属性值满足特定条件的记录(例如属性值大于30)
attr_value_filter = df[df["attributes"].apply(lambda x: x.get("目标属性名", 0) > 30)]

内容的提问来源于stack exchange,提问作者Alifher Silva

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 17:22:41