查询 SQL 数据源
查看等效的 InfluxDB v2 文档: 查询 SQL 数据源.
Flux sql
包提供了用于操作 SQL 数据源的功能。 sql.from()
允许您查询 SQL 数据源,如 PostgreSQL、MySQL 和 SQLite,并使用 InfluxDB 仪表板、任务和其他操作使用查询结果。
查询 SQL 数据源
要查询 SQL 数据源
- 在您的 Flux 查询中导入
sql
包 - 使用
sql.from()
函数指定驱动程序、数据源名称(DSN)和用于从您的 SQL 数据源查询数据的查询
import "sql"
sql.from(
driverName: "postgres",
dataSourceName: "postgresql://user:password@localhost",
query: "SELECT * FROM example_table",
)
import "sql"
sql.from(
driverName: "mysql",
dataSourceName: "user:password@tcp(localhost:3306)/db",
query: "SELECT * FROM example_table",
)
// NOTE: InfluxDB OSS and InfluxDB Cloud do not have access to
// the local filesystem and cannot query SQLite data sources.
// Use the Flux REPL to query an SQLite data source.
import "sql"
sql.from(
driverName: "sqlite3",
dataSourceName: "file:/path/to/test.db?cache=shared&mode=ro",
query: "SELECT * FROM example_table",
)
有关所需函数参数的信息,请参阅 sql.from()
文档。
将 SQL 数据与 InfluxDB 中的数据联合
从 InfluxDB 查询 SQL 数据源的主要好处之一是能够使用存储在 InfluxDB 外部的数据进行查询结果丰富。
使用下面的 空气传感器示例数据,以下查询将 InfluxDB 中存储的空气传感器度量与存储在 PostgreSQL 中的传感器信息联合。联合数据允许您根据不在 InfluxDB 中存储的传感器信息查询和筛选结果。
// Import the "sql" package
import "sql"
// Query data from PostgreSQL
sensorInfo = sql.from(
driverName: "postgres",
dataSourceName: "postgresql://127.0.0.1?sslmode=disable",
query: "SELECT * FROM sensors",
)
// Query data from InfluxDB
sensorMetrics = from(bucket: "telegraf/autogen")
|> range(start: -1h)
|> filter(fn: (r) => r._measurement == "airSensors")
// Join InfluxDB query results with PostgreSQL query results
join(tables: {metric: sensorMetrics, info: sensorInfo}, on: ["sensor_id"])
采样传感器数据
示例数据生成器 和 示例传感器信息 模拟了一组传感器,这些传感器测量建筑物内房间的温度、湿度和一氧化碳。每个收集到的数据点都存储在 InfluxDB 中,并带有 sensor_id
标签,用于标识它来自哪个特定的传感器。示例传感器信息存储在 PostgreSQL 中。
示例数据包括
从每个传感器收集并存储在 InfluxDB 中的
airSensors
度量中的模拟数据- 温度
- 湿度
- 一氧化碳
存储在 PostgreSQL 中的
sensors
表中的每个传感器的信息- sensor_id
- 位置
- 型号号码
- 上次检查
导入和生成示例传感器数据
下载并运行示例数据生成器
air-sensor-data.rb
是一个脚本,用于生成空气传感器数据并将其存储在 InfluxDB 中。要使用 air-sensor-data.rb
创建一个数据库 来存储数据。
下载示例数据生成器。 此工具需要 Ruby。
给
air-sensor-data.rb
赋予可执行权限chmod +x air-sensor-data.rb
启动生成器。指定您的数据库。
./air-sensor-data.rb -d database-name
生成器开始将数据写入 InfluxDB,并将在停止之前继续。使用
ctrl-c
停止生成器。注意: 使用
--help
标志查看其他配置选项。查询目标数据库以确保生成数据已成功写入。生成器不会捕获写入请求的错误,因此即使数据未成功写入InfluxDB,它也会继续运行。
from(bucket: "database-name/autogen") |> range(start: -1m) |> filter(fn: (r) => r._measurement == "airSensors")
导入示例传感器信息
下载示例传感器信息CSV文件。
使用PostgreSQL客户端(
psql
或GUI)创建sensors
表CREATE TABLE sensors ( sensor_id character varying(50), location character varying(50), model_number character varying(50), last_inspected date );
导入下载的CSV样本数据。更新
FROM
文件路径为下载的CSV样本数据路径。COPY sensors(sensor_id,location,model_number,last_inspected) FROM '/path/to/sample-sensor-info.csv' DELIMITER ',' CSV HEADER;
查询表以确保数据已正确导入
SELECT * FROM sensors;
这个页面有帮助吗?
感谢您的反馈!