【问题标题】:How to pass a vector from tableau to R如何将向量从画面传递到 R
【发布时间】:2019-10-25 00:28:27
【问题描述】:

我需要从 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 次传输和参数设置,因此这应该会加快速度

【问题讨论】:

    标签: tableau-api rserve


    【解决方案1】:

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

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

    您可以控制数据如何划分为向量,以及向量中数据的顺序,方法是编辑表 calc 以指定 分区和寻址那个计算。

    分区决定了如何将聚合查询结果分解为向量以进行计算。寻址决定了每个向量的元素是如何排序的。您可以根据表结构的物理布局来执行此操作,或者(更好地)根据特定维度来执行此操作。

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

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

    尝试 FIRST()、LAST()、LOOKUP()、WINDOW_SUM() 等也很有启发性——最后深入研究 PREVIOUS_VALUE()。警告, PREVIOUS_VALUE() 有点奇怪,并且不像你想象的那样行事。尽管如此,它仍然是一种可以实现递归计算的有用技术,并且与 Tableau 所获得的 for 循环一样接近。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-01-27
      • 1970-01-01
      • 2021-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-02-19
      • 2013-04-01
      相关资源
      最近更新 更多