宣布 Flux (前称 IFQL) v0.0.4 版本发布

导航到

我们最近发布了 IFQL - Influx 查询语言 (现在称为 Flux) 的 v0.0.4 版本。由于年底假期,我们发布此版本的速度略有延迟。从现在开始,我们预计每两周发布一次。此版本有一些令人兴奋的发展,主要集中在 Flux 语言本身的新功能上。以下是亮点快速列表

  • 在 Flux 中定义/调用函数的支持
  • 几个新的内置函数:map、shift、integral、derivative 和 difference
  • 支持多个值,covariance 函数是第一个使用多个值的函数

在语言中添加对函数的支持使用户能够在查询中创建小型的可重用组件,随着时间的推移建立有用的代码片段库。当需要对数据记录应用逻辑时,也会使用函数。函数用清晰、范围明确的函数替换了之前的表达式。我们希望您会发现它们是一个清晰而强大的工具。Flux 函数遵循以下语法

(parameter list) => <function body>

示例函数:添加两个值

// define the function add
add = (a,b) => a + b
// call the add function
add(a:1, b:5) // 6

以下是函数在行动中的示例

// serviceData gets the field from the requests measurement for a given service.
serviceData = (service,field) =>
    from(db:"myapp")
        // Use an anonymous function as the filter predicate, where "r" is the record.
        .filter(fn: (r) => r._measurement == "requests" and r._service == service and r._field == field)
// We want the last hour of data
start = -1h
// Get the requests for the "cart" service
reqs = serviceData(service:"cart", field:"requests").range(start:start)
// Get the errors for the "cart" service
errs = serviceData(service:"cart", field:"errors").range(start:start)
// Compute the correlation between the reqs and errs for the "cart" service
pearsonr(x:reqs, y:errs, on:["region"])

上述脚本将计算过去一小时购物服务错误和请求之间的皮尔逊相关系数。有趣的是,pearsonr 函数是用原生 Flux 函数定义的,并内置在语言中。以下是 pearsonr 在源中的定义。

// Covariance computes the covariance between x and y.
covariance = (x,y,on,pearsonr=false) =>
    join(
        tables:{x:x, y:y},
        on:on,
        fn: (t) => ({x:t.x._value, y:t.y._value}),
    )
    .covariance(pearsonr:pearsonr)


// Pearsonr computes the Pearson R correlation coefficient of x and y.
pearsonr = (x,y,on) => covariance(x:x, y:y, on:on, pearsonr:true)

pearsonr 函数实际上是 covariance 函数,其中 pearsonr 参数设置为 true。而 covariance 函数是一个 join 操作,它将 x 和 y 表连接起来,然后将数据传递给 covariance 方法,该方法计算连接表上的多个值之间的实际协方差。随着时间的推移,语言中将添加更多函数,我们希望这些内置函数可以成为新用户的良好示例。

我们对函数和多个值支持将为 Flux 带来的强大功能感到兴奋。有任何反馈或希望看到对特定函数的支持?请在 Flux 的仓库上提交问题或拉取请求。有关 v0.0.4 版本中更改的完整列表,请参阅更改日志