文档

查询 SQL 数据源

本页文档记录了 InfluxDB OSS 的早期版本。 InfluxDB OSS v2 是最新稳定版本。 查看等效的 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 度量中

    • 温度
    • 湿度
    • co
  • 存储在 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