我有一堆R脚本,它们从各种来源读取数据,执行所有需要的分析,并进行一些可视化。现在我需要把可视化部分交给Tableau,并在后者中准备整个仪表板。
据我所知,我可以保存所有的data.frames
到.Rdata
文件,并将它们加载到Tableau中,但从长远来看,这似乎是一个难题,而整个程序应该尽可能自动化。
我知道的第二个选项是读取Tableau中的数据,通过Rserve
连接到R,并从Tableau
调用简单的R脚本。这将是一种选择,但是:
- R脚本不能完全自动化-它们需要与用户进行一些交互,必须由用户控制分析,应该保持原样
- 我的脚本做了太多的数据清理和争论,我认为最好把这项工作单独放在R中
所以我的问题是,集成R和Tableau的最佳方法是什么,这样在我在R中执行所有分析后,我只能用很少的图更新先前准备的Tableau仪表板中的数据?
有两种主要的方法可以同时使用Tableau和R,以适应不同的用例。第一种方法是使用R上游来准备和分析数据,然后将这些数据提供给Tableau用于生成和共享可视化。第二种方法是让Tableau通过RServe交互连接到R。在这种情况下,Tableau使用R有效地调用函数并返回值,然后Tableau可以将这些值合并到可视化中。一个很好的例子是让Tableau向R发送数据值,然后可以通过先前训练的分类器模型对其进行评分。R提供了模型评估;Tableau提供交互式可视化。
您的案例似乎属于第一类——使用R上游生成数据,并将其提供给Tableau。在这种情况下,您可以将数据保存为Tableau可以连接到的任何格式(表格(:csv、Rdata、数据库表、xlsx、shp。你的选择。
您还可以考虑将生成的数据转换为Tableau数据提取格式(以前是.tde,现在是.thyper(。这将加快分析速度,并可以简化数据发布。Tableau具有允许Python(以及Java、C等(生成提取的API,还具有用于Windows生成提取的命令行实用程序。
如果你的目标是自动化ETL过程,你应该考虑使用Tableau Prep工具,它可以将你的Rdata文件转换为摘录,而无需编写脚本。最后一个要考虑的主题是使用Tableau Server为用户和工作簿提供数据。当您准备好执行该步骤时,您有几个关于如何在Tableau服务器上发布和刷新数据的选项。通过让服务器按计划启动刷新,或者在R脚本执行后启动刷新。在最后一种情况下,还有另一种API是有用的,称为Tableau REST API,Tableau还向github发布了一个开源库,使使用Python中的REST API变得容易。Tableau已宣布计划让Tableau Server在2019年执行TablePrep流程。
RServe的交互式用例在很多情况下都很好,但似乎不是您想要的。有一点需要注意:该功能是为交互式使用而设计的。如果你在R中有一个长期运行的计算,比如说训练一个复杂的ML模型,那么当你想要构建和共享交互式可视化时,你通常最好将其作为一个单独的步骤来完成,并将Tableau纳入其中。