Flux Join 教程 - 使用 PostgreSQL 的数据丰富时间序列数据
作者:Charles Mahler / 产品, 用例, 开发者
2022 年 1 月 20 日
导航至
在本教程中,您将学习如何使用 Flux 查询语言,通过将存储在 InfluxDB 中的时间序列数据与存储在 关系数据库 中的元数据相结合来丰富时间序列数据。
教程要求
要学习本教程,您需要准备一些东西。首先是运行中的 InfluxDB 实例,可以是 Cloud 或本地 开源版本。您需要在 InfluxDB 实例中创建一个存储桶,并将 空气传感器示例数据集 存储在该存储桶中。您还需要下载 配对的关系型 SQL 数据集,其中包含传感器元数据,该数据集位于同一页面上,然后将该数据存储在您首选的关系数据库中。Flux 本地提供对许多最流行的数据库的支持,例如
- PostgreSQL
- MySQL
- Amazon RDS
- Microsoft SQL Server
- SQLite
- Google BigQuery
查看文档以获取 受支持的外部数据存储 的完整列表。
使用 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 密钥,而不是在 Flux 查询中使用纯文本。这也将使跨多个 Flux 脚本重用凭据变得更容易,并明显降低重大安全问题的发生几率。以下是使用密钥并将凭据导入脚本后 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 查询为下拉列表和其他字段创建仪表板变量,这可以使最终用户更快更轻松地过滤他们正在查看的数据,而无需编写自己的查询。
另一个用例是基于外部数据创建警报。每个传感器可能都有不同的定义阈值,可用于将当前值与其进行比较。如果该阈值超出范围,则可以采取 自动化操作。对于像 应用程序性能监控 这样的情况,您可能存储了服务所有者的联系信息,并且此数据可用于创建自动 SMS 或 Slack 消息。
Flux 还提供了使用 sql.to
方法将计算数据输出到 外部数据库 的能力。在 Flux 中运行计算后,您可以导出结果以存储在关系数据库中。
下一步
希望本文为您简要介绍了如何使用 Flux 将时间序列数据库(如 InfluxDB)的优势与您选择的关系数据库相结合,从而获得两全其美的效果。以下是一些额外的资源,供希望更深入了解 InfluxDB 和 Flux 的读者参考
- InfluxDB Time to Awesome 书籍 - 学习所有关于 InfluxDB 的详细指南。这本免费书籍将教您如何在 InfluxDB 内部构建数据结构,如何使用 Flux 查询数据,以及如何利用整个 InfluxDB 生态系统
- Telegraf - 一款开源工具,用于收集、转换和存储数据,而无需编写任何代码。拥有超过 250 个输入插件,可以输出到 40 多个不同的数据存储。
- 什么是时间序列数据 - 深入探讨时间序列数据到底是什么以及何时需要它
- Flux join 教程 - 更详细地了解如何使用 Flux 从文档中连接数据
- 时间序列数据库详解 - 解释什么是时间序列数据库、何时应使用以及它们为何重要的资源
- 如何使用 Flux 对时间序列数据进行分组、塑形和分析 - 本教程将教您 Flux 的更多高级功能,并提供一些可视化效果,帮助您了解如何转换数据
- 如何使用 InfluxDB 透视和连接时间序列数据 - 另一个教程展示了可用于转换数据的 Flux 的各种功能