如何将向量从Tableau传递到R

时间:2019-06-10 15:23:17

标签: tableau rserve

我需要从tableau向Rserve传递参数向量。具体来说,我在R(在Rserve上)中使用IRR计算,并且我希望传递作为表中列(而不是行/度量)的现金流量矢量。因此,我想将所有这些CF收集到一个向量中,并将其传递给Rserve。一次传递一个会减慢IO。

SCRIPT_REAL(“ r_func(c(.arg1,.arg2,.arg3))”,sum(cf1),sum(cf2),sum(cf3))

cf1..cfn是对应于各个期间的现金流量。上面的代码在cf很少的情况下效果很好,但是在我很少遇到麻烦时需要很长时间。此外,与远程Rserve通信时,花费的时间不在计算中,而是在IO上。如果我有本地Rserve,则在远程情况下此计算会在几秒钟内完成,而这一过程将花费一分钟以上的时间。

还要指出,tableau / Rserve,一个接一个地设置参数,这需要时间。我的期望是,一旦有了向量,就只能进行1次传递和参数设置,因此应该可以加快速度

1 个答案:

答案 0 :(得分:1)

了解Tableau如何与R或Python交互的第一步是了解Tableau的表计算如何工作。

Tableau Script_XXX()函数是表计算,这意味着您在汇总查询结果的 vector 上调用它们,并且相应的R或Python代码需要返回 vector 通常大小相同。 (我认为您可能可以返回标量或更小的矢量,该矢量将被复制以显示为与参数大小相同的矢量-但不确定)

您可以通过编辑表格calc为 分区和寻址 来控制如何将数据划分为矢量,以及矢量中数据的顺序。该计算。

分区确定了如何将汇总查询结果分解为矢量以进行计算。寻址确定每个向量的元素如何排序。您可以根据表结构的物理布局进行操作,也可以根据特定的尺寸(更好)进行操作。

有关更多信息,请参见Tableau on-line help for table calcs,并查看Tableau或博客条目(尤其是来自名叫Bora的人)的在线培训视频

一种测试您对这些概念的理解的方法是创建一个Tableau表(即带有标记类型的文本的Viz),该表在行和列架子上具有多个尺寸。然后为INDEX()和SIZE()创建计算字段,并在文本上显示它们。最后,通过编辑那些表计算以不同的方式更改分区和寻址。尝试几个不同的排列。当您可以自信地预测这些功能将在不同的设置下产生什么时,那么您就可以准备执行更复杂的任务了,例如与R交谈。

尝试FIRST(),LAST(),LOOKUP(),WINDOW_SUM()等也很有启发性-并最终探究PREVIOUS_VALUE()。警告,PREVIOUS_VALUE()有点奇怪,它的行为与您可能认为的不同。尽管如此,它仍然是一种有用的技术,可以实现递归计算,并且与Tableau一样接近for循环。

相关问题