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

导航至

数据分析是任何企业或组织的关键方面,因为它有助于做出明智的决定并提高整体绩效。然而,随着每天产生的海量数据,手动分析和从中获取洞察可能令人不知所措。

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

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

注意:InfluxDB Cloud 是建立在 Apache 生态系统之上的,包括 Apache Arrow Flight SQL,它使与各种可视化工具的互操作性成为可能。然而,在您可以使用 JDBC Flight Arrow 驱动程序将 Tableau 直接连接到 InfluxDB Cloud 服务器之前,还需要进行进一步的开发。我遇到了以下问题 #2415。当 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,即table_name变量中定义的airSensors表。查看所有支持的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以创建时间序列可视化。具体来说,我们将绘制随时间变化的碳 monoxide水平。

Connections

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

visualizing the sum across all of the sensors

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

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具有的功能。