使用 Tableau 和 InfluxDB Cloud 预测和可视化时间序列
作者:Anais Dotis-Georgiou / 产品
2023 年 4 月 6 日
导航至
数据分析是任何企业或组织的关键方面,因为它有助于做出明智的决策和提高整体绩效。然而,随着每天生成的大量数据,手动分析和从中获取见解可能会让人感到难以承受。
值得庆幸的是,随着 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 文件。
为了摄取 Parquet 文件,您必须首先将 Parquet 文件转换为 Hyper 文件。为了将我们的数据转换为 Hyper 文件,我们必须了解我们当前的数据是什么样的。使用以下命令查看列、类型以及它们是否可为空。
SHOW COLUMNS FROM “airSensors”
此信息对于我们使用 Tableau Hyper API 构建 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 文件并单击打开。
现在您可以查看您的数据源和其中的数据。单击工作表 1以制作时间序列可视化效果。具体来说,我们将绘制随时间变化的一氧化碳水平图。
在工作表 1中,将 Co 值拖放到行架子上,将 Time 拖放到列架子上。要以正确的时间戳分辨率查看数据,请右键单击并选择更多。默认情况下,我们将可视化所有传感器的总和。
要查看每个传感器的原始 Co 值,请将 sensor_id
拖到标记面板中,并通过右键单击将其设置为维度。接下来,单击 sensor_id
右侧的图标,然后选择颜色以生成四色圆圈图标,并根据传感器值为每个一氧化碳时间序列分配颜色。
最后,右键单击行架子中的 Co 值,并将其从度量更改为属性,以生成 ATTR(Co) 而不是 SUM(Co)。
在 Tableau 中进行预测
Tableau 具有许多功能,包括预测。在 Tableau 中进行预测 的好处之一是它会自动执行算法选择,因此您可以专注于对预测数据采取行动,而不是生成预测。现在,让我们按照 此文档 生成 Co 值总和的预测。具体来说,转到“分析”选项卡,然后将预测拖到您的数据上。如果您收到错误“由于缺少值太多,无法计算预测”,请尝试通过在“列”架子中将时间分辨率更改为 MINUTE(Time) 来降低数据的分辨率。如果您在 Tableau 中预测数据时遇到其他错误,请查阅 以下文档。
最终想法
当使用 Tableau、Parquet 和 Hyper 文件时,我建议使用以下资源
- 随附本教程的 存储库。
- Tableau Hyper API 文档。
- Tableau Hyper API 示例,一个包含 Tableau 支持的 Hyper API 示例和社区支持的 Hyper API 示例的存储库,用于将数据转换为 Hyper 文件。
- 解决预测错误 文档。
- 创建预测 文档。要利用 InfluxDB IOx 的所有进步,请在此处注册 此处。如果您想联系 InfluxDB IOx 开发人员,请加入 InfluxData 社区 Slack 并查找 #influxdb_iox 频道。
我希望这篇博文能激发您探索 InfluxDB Cloud,并让您对它的未来感到兴奋——尤其是能够借助 Parquet 从 InfluxDB 传输大型数据集以使用您选择的工具进行数据处理的能力。如果您对这种互操作性感兴趣,请使用我们的 社区站点 或 Slack 频道联系我们。我很乐意了解您正在尝试实现的目标以及您希望 InfluxDB Cloud 具备哪些功能。