Flux教程 - 使用PostgreSQL数据丰富时序数据

导航到

在本教程中,您将学习如何使用Flux查询语言,通过将其与存储在关系数据库中的元数据相结合,来丰富存储在InfluxDB中的时序数据。

教程要求

为了跟随这个教程,您需要一些东西。首先是运行中的InfluxDB实例,无论是还是本地开源版本。您需要在InfluxDB实例中创建一个桶,并将空气传感器样本数据集存储在那个桶中。您还需要下载包含传感器元数据的配对关系型SQL数据集,该数据集在同一页面上,然后将其存储在您首选的关系数据库中。Flux原生支持许多最流行的数据库,如

  • PostgreSQL
  • MySQL
  • Amazon RDS
  • Microsoft SQL Server
  • SQLite
  • Google BigQuery

查看完整的支持的外部数据存储列表。

InfluxDB - Supported external datastores

使用Flux查询PostgreSQL

以下是一个基本示例,说明您如何使用InfluxDB提供的空气传感器样本数据将关系型数据与时序数据结合起来

import "sql"

//postgres query
sensorInfo = sql.from(
  driverName: "postgres",
  dataSourceName: "postgresql://username:password@localhost:5432",
  query: "SELECT * FROM table_name"
)

//  InfluxDB query
sensorMetrics = from(bucket: "example-bucket")
  |> range(start: -1h)
  |> filter(fn: (r) => r._measurement == "airSensors")

// Join results from previous two queries
join(tables: {metric: sensorMetrics, info: sensorInfo}, on: ["sensor_id"])

此查询的结果是将数据合并成一张表,行基于每个数据集的传感器ID。

当处理需要身份验证凭据的数据库或其他资源时,使用InfluxDB Secrets而不是在Flux查询中使用明文是一个好主意。这还将使您更容易在多个Flux脚本中重用凭据,显然会降低重大安全问题的可能性。以下是一个使用secrets和将凭据导入脚本中的Postgres查询的示例

import "influxdata/influxdb/secrets"
import "sql"

username = secrets.get(key: "POSTGRES_USERNAME")
password = secrets.get(key: "POSTGRES_PASSWORD")

sql.from(
  driverName: "postgres",
  dataSourceName: "postgresql://${username}:${password}@localhost",
  query:"SELECT * FROM table_name"
)

有关sql.from 方法参数的更多信息,您可以阅读文档

使用InfluxDB使用外部数据的实际用例

现在您已经了解了如何使用Flux将外部数据与存储在InfluxDB中的数据结合起来。但是,有哪些实际的实用用例呢?

一个明显的用途是使用外部数据增强数据可视化,为查看图表或仪表板的人提供更多上下文。与相对无意义的传感器ID相比,能够拉入传感器所在房间的实际可读名称很有帮助。根据您的数据集,您可以通过许多不同的方式改进您的数据可视化。更高级的用例可能是创建更灵活的仪表板模板。在这种情况下,可以使用SQL查询创建下拉列表和其他字段的仪表板变量,这可以使最终用户更快更容易地过滤他们查看的数据,而无需编写自己的查询。

另一种用法可能是基于外部数据创建警报。每个传感器可能都有不同的定义阈值,可以用来与当前值进行比较。如果该阈值超出范围,可以采取自动操作。例如,对于应用程序监控,你可能已经存储了服务所有者的联系信息,并可以使用这些数据创建自动的短信或Slack消息。

Flux还提供了使用sql.to方法将计算数据输出到外部数据库的功能。在Flux中运行计算后,可以将结果导出以存储在关系数据库中。

下一步

希望这篇文章为您介绍了如何使用Flux将InfluxDB等时间序列数据库的优势与您选择的关系数据库相结合,以获得两者的最佳效果。以下是针对希望更深入了解InfluxDB和Flux的读者的额外资源:

  • InfluxDB Time to Awesome书 - 一本详细介绍InfluxDB所有知识的详细指南。这本免费书籍将教会您如何在InfluxDB中结构化数据,如何使用Flux进行查询,以及如何充分利用整个InfluxDB生态系统。
  • Telegraf - 一个开源工具,用于收集、转换和存储数据,无需编写任何代码。拥有超过250个输入插件,并且可以输出到40多个不同的数据存储。
  • 什么是时间序列数据 - 深入探讨时间序列数据究竟是什么,以及何时需要它。
  • Flux连接教程 - 从文档中更详细地了解如何使用Flux进行数据连接。
  • 时间序列数据库解释 - 解释什么是时间序列数据库,何时应该使用它们,以及为什么它们很重要。
  • 如何使用Flux分组、塑形和分析数据 - 这篇教程将教会您Flux的一些更高级的功能,并提供一些可视化来帮助您了解您如何转换数据。
  • 如何在InfluxDB中旋转和连接时间序列数据 - 另一篇教程,展示了Flux的各种功能,可用于转换您的数据。