处理从R返回到Tableau的字符串并将其拆分SPLIT

问题描述

我将Tableau连接到R并执行R功能以推荐产品。当R结束时,返回值是一个字符串,其中将包含所有产品详细信息,如下所示:

@H_502_2@ID|Existing_Prod|Recommended_Prod\nC001|NA|PROD008\nC002|PROD003|NA\nF003|NA|PROD_ABC\nF004|NA|PROD_ABC1\nC005|PROD_ABC2|NA\nC005|PRODABC3|PRODABC4

(每行用\ n分隔表示行尾)

在Tableau上,我显示计算出的字段,如下所示:

@H_502_2@ID|Existing_Prod|Recommended_Prod C001|NA|PROD008 C002|PROD003|NA F003|NA|PROD_ABC F004|NA|PROD_ABC1 C005|PROD_ABC2|NA C005|PRODABC3|PRODABC4

以上数据通过一个计算字段作为单个字符串到达​​Tableau,我想根据管道('|')进行拆分。现在,我需要将其分为三列,由管道分隔。

我在计算字段上使用了Split函数

@H_502_2@SPLIT([R_Calculated_Field],'|',1) SPLIT([R_Calculated_Field],2) SPLIT([R_Calculated_Field],3)

但是错误显示“ SPLIT函数不能应用于表计算”,这是不言自明的。是否有其他解决方案?我用谷歌搜索了处理R和Tableau之间集成的最佳实践,而我发现的只是简单的kmeans聚类代码

解决方法

确保您了解表calc的分区和寻址方式。表calc将参数的向量传递给R脚本,并作为响应接收单个向量。这些向量的基数取决于表calc的分区。您可以通过编辑表格calc并单击特定尺寸来查看。未选中的字段确定分区-从而确定您从R发送和接收的参数的基数

这意味着将您的问题映射到此基础结构可能很棘手。不一定是不可能的。它的设计目的是发送一系列向量参数,每个分区维度一个单元格,例如Manufacturer,并返回一个向量,每个制造商返回一个结果(或字段的任何组合对表calc进行数据分区)。听起来好像您期望任意长度的建议列表。在返回之前,让R脚本将字符串转换为向量并不难,但是向量的大小必须有意义。

作为更容易适合此模型的方法的示例,假设您有一个Tableau视图,其中每个产品都有一行(并且您有N个产品),并且每个产品视图中还有一些其他聚合的度量值字段。 (用Tableau来说,视图的详细级别是在“产品”级别。)

将这些度量作为一系列参数向量传递给R会很简单-每个向量具有N个值,然后让R返回一个长度为N的实数的向量,其中在每个位置处返回的值都是R的推荐分数该位置的产品。 (这就是向量的排序也很重要的原因)

然后,您可以从视图中过滤掉得分较低的产品,并在视觉上区分高度推荐的产品。

因此,了解R集成的第一步是了解表计算如何进行分区和寻址,并考虑双向传递的固定长度向量。

如果此模型不能很好地支持您的用例,则您可以对URL操作或JavaScript API进行一些有用的操作。