使用 Tableau 和 InfluxDB Cloud 预测和可视化时间序列

导航至

数据分析是任何企业或组织的关键方面,因为它有助于做出明智的决策和提高整体绩效。然而,随着每天生成的大量数据,手动分析和从中获取见解可能会让人感到难以承受。

值得庆幸的是,随着 Tableau 和 InfluxDB Cloud 等由 IOx 驱动的强大数据分析工具的出现,组织现在可以轻松地实时存储、处理和分析他们的数据。Tableau 是一款领先的数据可视化和商业智能软件,为创建交互式可视化和仪表板提供了直观且用户友好的界面。InfluxDB Cloud 是一个基于云的平台,构建于 Apache 生态系统之上,使组织能够大规模收集、存储和分析时间序列数据。IOx 存储引擎提供接近无限的基数以及高性能的存储和查询能力。

Tableau 和 InfluxDB Cloud 的结合为组织提供了强大的数据分析工具集。这种组合使组织能够快速创建引人入胜且富有洞察力的可视化效果,使他们能够更快地获得见解并做出数据驱动的决策。在这篇博文中,我们将探讨如何将 Tableau 与 InfluxDB Cloud 结合使用进行数据分析。我们将从 InfluxDB Cloud 上传 Parquet 文件到 Tableau,使用 SQL 进行查询,创建一些可视化效果,并使用 Tableau 预测我们的数据。

注意:InfluxDB Cloud 构建于包括 Apache Arrow Flight SQL 在内的 Apache 生态系统之上,这实现了与各种可视化工具的互操作性。但是,在您可以使用 JDBC Flight Arrow 驱动程序 将 Tableau 直接连接到 InfluxDB Cloud 服务器之前,还需要进一步开发。我遇到了以下问题 #24158。当 JDBC Flight Arrow 驱动程序可用时,这篇文章将更新以使用它。但是,InfluxDB Cloud 用户将来也能够直接查询 Parquet 文件并使用此处描述的方法。虽然这些功能目前尚不可用,但这篇文章旨在阐明 InfluxDB Cloud 的未来。

在 Tableau 中上传 Parquet 文件

在本教程中,我们将从 InfluxDB Cloud 加载 airSensor 示例数据集的一部分到 Tableau。具体来说,我们将加载传感器 TML0100 的温度、湿度和一氧化碳水平。您可以在 此存储库 中找到来自 InfluxDB Cloud 的 Parquet 文件、相应的 Parquet 到 Hyper 文件转换脚本以及生成的 Hyper 文件。

InfluxDB-Tableau

为了摄取 Parquet 文件,您必须首先将 Parquet 文件转换为 Hyper 文件。为了将我们的数据转换为 Hyper 文件,我们必须了解我们当前的数据是什么样的。使用以下命令查看列、类型以及它们是否可为空。

SHOW COLUMNS FROM “airSensors”

此信息对于我们使用 Tableau Hyper API 构建 TableDefinition 时非常重要。

Data Explorer - TableDefinition

create_hyper_file_from_parquet_file.py 将 Parquet 文件转换为 Hyper 文件。其中大部分是样板代码。为了写入我们的数据,请关注以下代码部分

if __name__ == '__main__':
    try:
        # The `airSensors` table to read from the Parquet file.
        table_definition = TableDefinition(
            table_name="airSensors",
            columns=[
                TableDefinition.Column("co", SqlType.double(), NULLABLE),
                TableDefinition.Column("humidity", SqlType.double(), NULLABLE),
                TableDefinition.Column("sensor_id", SqlType.text(), NULLABLE),
                TableDefinition.Column("temperature", SqlType.double(), NULLABLE),
                TableDefinition.Column("time", SqlType.timestamp(), NOT_NULLABLE),
            ]
        )

        run_create_hyper_file_from_parquet(
            "airSensors.parquet",
            table_definition,
            "airSensors.hyper")

这是我们定义源 Parquet 文件“airSensors.parquet”的路径和目标 Hyper 文件“airSensors.hyper”的路径的地方。这也是我们创建 TableDefinition(SQL 表定义)的地方。我们使用来自 SHOW COLUMNS 命令的信息来告知我们的表 TableDefinition,airSensors,如 table_name 变量中定义的那样。在此处查看所有支持的 SqlTyes 类型 此处。如果脚本成功运行,您应该看到以下终端输出。

python3 create_hyper_file_from_parquet.py
COPY "airSensors" FROM 'airSensors.parquet' WITH (FORMAT PARQUET)
-- 2888 rows have been copied from 'airSensors.parquet' to the table "airSensors" in 'airSensors.hyper'.

在 Tableau 中可视化来自 InfluxDB 的时间序列数据

要在 Tableau 中制作时间序列图,我们必须首先将 Hyper 文件加载到 Tableau 中。在到文件部分中,选择更多…,然后选择 Hyper 文件并单击打开

Visualizing time series data from InfluxDB in Tableau

现在您可以查看您的数据源和其中的数据。单击工作表 1以制作时间序列可视化效果。具体来说,我们将绘制随时间变化的一氧化碳水平图。

Connections

工作表 1中,将 Co 值拖放到架子上,将 Time 拖放到架子上。要以正确的时间戳分辨率查看数据,请右键单击并选择更多。默认情况下,我们将可视化所有传感器的总和。

visualizing the sum across all of the sensors

要查看每个传感器的原始 Co 值,请将 sensor_id 拖到标记面板中,并通过右键单击将其设置为维度。接下来,单击 sensor_id 右侧的图标,然后选择颜色以生成四色圆圈图标,并根据传感器值为每个一氧化碳时间序列分配颜色。

tables

最后,右键单击架子中的 Co 值,并将其从度量更改为属性,以生成 ATTR(Co) 而不是 SUM(Co)

Data

在 Tableau 中进行预测

Tableau 具有许多功能,包括预测。在 Tableau 中进行预测 的好处之一是它会自动执行算法选择,因此您可以专注于对预测数据采取行动,而不是生成预测。现在,让我们按照 此文档 生成 Co 值总和的预测。具体来说,转到“分析”选项卡,然后将预测拖到您的数据上。如果您收到错误“由于缺少值太多,无法计算预测”,请尝试通过在“列”架子中将时间分辨率更改为 MINUTE(Time) 来降低数据的分辨率。如果您在 Tableau 中预测数据时遇到其他错误,请查阅 以下文档

forecasting your data in Tableau

最终想法

当使用 Tableau、Parquet 和 Hyper 文件时,我建议使用以下资源

我希望这篇博文能激发您探索 InfluxDB Cloud,并让您对它的未来感到兴奋——尤其是能够借助 Parquet 从 InfluxDB 传输大型数据集以使用您选择的工具进行数据处理的能力。如果您对这种互操作性感兴趣,请使用我们的 社区站点Slack 频道联系我们。我很乐意了解您正在尝试实现的目标以及您希望 InfluxDB Cloud 具备哪些功能。