使用 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 到 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 文件。
为了导入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,即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文件并单击“打开”。
现在您可以查看数据源及其中的数据。单击工作表1以创建时间序列可视化。具体来说,我们将绘制随时间变化的碳 monoxide水平。
在工作表1中,将Co值拖放到行架上,将时间拖放到列架上。为了以正确的时间戳分辨率查看数据,右键单击并选择“更多”。默认情况下,我们将可视化所有传感器的总和。
要查看每个传感器的原始Co值,将sensor_id
拖放到标记面板中,并右键单击将其设置为维度。接下来,单击sensor_id
右侧的图标,选择“颜色”以生成四个颜色的圆形图标,并根据传感器值分配每个碳 monoxide时间序列的颜色。
最后,右键单击行架中的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 Community Slack并查找#influxdb_iox频道。
我希望这篇博客文章能激发您探索InfluxDB Cloud的兴趣,并对其未来感到兴奋——特别是使用Parquet将大型数据集从InfluxDB传输出来,使用您选择的工具进行数据处理的能力。如果您对此互操作性感兴趣,请通过我们的社区网站或Slack频道联系我们。我很乐意了解您想实现的目标以及您希望InfluxDB Cloud具有的功能。