文档资料

查询 SQL 数据源

查看等效的 InfluxDB v2 文档: 查询 SQL 数据源.

Flux sql 包提供了用于操作 SQL 数据源的功能。 sql.from() 允许您查询 SQL 数据源,如 PostgreSQLMySQLSQLite,并使用 InfluxDB 仪表板、任务和其他操作使用查询结果。

查询 SQL 数据源

要查询 SQL 数据源

  1. 在您的 Flux 查询中导入 sql
  2. 使用 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

  1. 创建一个数据库 来存储数据。

  2. 下载示例数据生成器。 此工具需要 Ruby

    下载空气传感器生成器

  3. air-sensor-data.rb 赋予可执行权限

    chmod +x air-sensor-data.rb
    
  4. 启动生成器。指定您的数据库。

    ./air-sensor-data.rb -d database-name
    

    生成器开始将数据写入 InfluxDB,并将在停止之前继续。使用 ctrl-c 停止生成器。

    注意: 使用 --help 标志查看其他配置选项。

  5. 查询目标数据库以确保生成数据已成功写入。生成器不会捕获写入请求的错误,因此即使数据未成功写入InfluxDB,它也会继续运行。

    from(bucket: "database-name/autogen")
       |> range(start: -1m)
       |> filter(fn: (r) => r._measurement == "airSensors")
    

导入示例传感器信息

  1. 下载并安装PostgreSQL.

  2. 下载示例传感器信息CSV文件。

    下载样本数据

  3. 使用PostgreSQL客户端(psql或GUI)创建sensors

    CREATE TABLE sensors (
      sensor_id character varying(50),
      location character varying(50),
      model_number character varying(50),
      last_inspected date
    );
    
  4. 导入下载的CSV样本数据。更新FROM文件路径为下载的CSV样本数据路径。

    COPY sensors(sensor_id,location,model_number,last_inspected)
    FROM '/path/to/sample-sensor-info.csv' DELIMITER ',' CSV HEADER;
    
  5. 查询表以确保数据已正确导入

    SELECT * FROM sensors;
    

这个页面有帮助吗?

感谢您的反馈!


Flux的未来

Flux将进入维护模式。您可以继续像现在一样使用它,而无需对您的代码进行任何更改。

阅读更多

InfluxDB v3增强和InfluxDB Clustered现已上市

新功能,包括更快的查询性能和管理工具,推进了InfluxDB v3产品线。InfluxDB Clustered现已上市。

InfluxDB v3性能和功能

InfluxDB v3产品线在查询性能方面取得了显著提升,并提供了新的管理工具。这些增强包括一个用于监控InfluxDB集群健康的操作仪表板,InfluxDB Cloud Dedicated中的单点登录(SSO)支持,以及用于令牌和数据库的新管理API。

了解v3增强功能


InfluxDB Clustered上市

InfluxDB Clustered现已上市,为您在自管理堆栈中提供了InfluxDB v3的强大功能。

与我们谈谈InfluxDB Clustered