假设我在我的Influx数据库中有一个名为'cpu'的测量值:
name: cpu time host app org usage_idle ---- ----- ------------ ------------ ---------- 1505758901462105873 serverA applicationA org1 23 1505758901462106873 serverB applicationA org2 42
我写了一个tick脚本来查询来自这个测量的数据:
var data = batch |query('''select 100-min(usage_idle) as used_percent from "application"."autogen"."cpu"''') .period(1m) .every(10s) .groupBy(time(1s), 'app', 'org', 'host') .align() // Here I want to write Lambda? to change tag names data|influxDBOut() .database('someDataBase') .measurement('someMeasurement') .precision('s')
我希望此查询的结果包含而不是'app' - 'app_name',而不是'org' - 'app_group'。我应该在tick脚本中包含什么才能更改标签名称? 注意!作为一种解决方法,我可以在结果中插入名为“app_name”和“app_group”的新列,但我不想在其中添加更多列并且具有重复数据。
寻找一些建议。谢谢
答案 0 :(得分:2)
这是解决方案! 我们的想法是添加一个新标签并删除旧标签(而不是重命名)。上面的tick脚本如下所示:
var data = batch
|query('''select 100-min(usage_idle) as used_percent from "application"."autogen"."cpu"''')
.period(1m)
.every(10s)
.groupBy(time(1s), 'app', 'org', 'host')
.align()
|eval(lambda: "app")
.as('app_name')
.keep('used_percent')
.tags('app_name')
|delete()
.tag('app')
|eval(lambda: "org")
.as('app_group')
.keep('used_percent')
.tags('app_group')
|delete()
.tag('org')
data|influxDBOut()
.database('someDataBase')
.measurement('someMeasurement')
.precision('s')