python - Redis Timeseries,使用 LUA 滚动求和
问题描述
我有一个时间序列,我想计算其滚动总和。我的想法(这可能已经不是最理想的了)是有一个脚本来计算每个数据点,然后在管道中从 python 运行它。
我在剧本上挣扎。
return
redis.call('TS.ADD',
KEYS[1],
ARGV[1],
redis.call('TS.RANGE',
'ts:1s',
ARGV[2],
ARGV[3],
'AGGREGATION',
'sum',
120000)[1][2])
当我在 redis-cli 上用 args 评估这个1 ts:rolling:sum 1609011855000 1609013655000
它返回:
(error) ERR Error running script (call to f_e57a3287fc55b792d33ba7c21e3aae715c5ee3e5): @user_script:1: @user_script: 1: Lua redis() command arguments must be strings or integers
第一次通话
eval "return redis.call('TS.RANGE',
'ts:1s',
ARGV[2],
ARGV[3],
'AGGREGATION',
'sum',
120000)" 0 1609011855000 1609013655000
给我
1) 1) (integer) 1609012800000
2) 2057
奇怪的是,我可以对时间戳求和,但不能对值求和。
我以前从未接触过 lua,所以我可能在这里遗漏了一些非常明显的东西
我不确定我是否清楚,所以这里是 python 和 pandas,我想要实现的目标:
import pandas as pd
df = pd.DataFrame(my_data_granular_to_1s, columns=['date','val']).set_index(date)
df.val.resample('1s').sum().rolling(120).sum() # <= that
解决方案
事实证明
1) 1) (integer) 1609012800000
2) 2057
2057 可通过 lua 访问
v[1][2]["ok"]
从我“我今天第一次接触 lua”的角度来看,看起来很像一个错误。在打开 github 上的问题通知团队之前,我会再熟悉一点,以确保我不会遗漏一些明显的东西
推荐阅读
- eclipse-hono - Eclipse-hono MQTT 适配器:无法处理消息
- sql - 如何在给定条件下获取周数
- javascript - 如何使用jquery动态添加行?
- android - 在 Kotlin 中未触发 LiveData 观察者
- dart - 如何在颤动中实现字母滚动
- visual-studio - Visual Studio 无法附加到 coreCLR。访问被拒绝
- javascript - postMessage() 在 WKWebView 中不起作用(iOS,目标 c)
- javascript - Console.log 在 Chrome 中总是返回 undefined
- regex - 匹配后出现的 grep
- java - 从java调用存储过程我得到了?对于包含希腊字符的字符串