我使用宏来定义核心计算。而且我希望尽可能少地为宏定义。所以,我有一个宏,它基于变量$period
的计算。然后我尝试在石墨查询中使用与period
相关的变量,但是我收到错误。
简化代码:
# defined outside a macro
$period_min = 5
#macro, skipping irrelevant variables
$control_period_min = $period_min * 3
$periods = graphiteBand( $expr, "${control_period_min}m", "1h", "tag", 1 )
产地:
graphiteBand:时间:未知单位*持续时间5 * 3m
我想知道,是否有可能以不同的方式实现相同的逻辑?
答案 0 :(得分:1)
变量只是字符串替换。因为你把它放在引号中,所以你创建了一个字面意思为“5 * 3”的字符串。
您可以使用tod()
function:
# defined outside a macro
$period_min = 5
#macro, skipping irrelevant variables
$control_period_min = $period_min * 3
avg(q("avg:rate:os.cpu{host=*bosun*}", tod($control_period_min), ""))