在Tableau中进行Python脚本计算

时间:2019-03-04 02:20:04

标签: python tableau tabpy

我正在尝试使用给定的股票报价来计算Tableau中股票的平均每日交易量。我已经将Python与Tableau连接起来;但是,计算失败,并继续显示以下错误消息: enter image description here

以下是我在Tableau中的python代码: enter image description here

我在Tableau中创建了一个参数,以使用户可以选择他们感兴趣的股票。该参数的名称为[Stock ticker]。谁能帮我这个忙吗? 谢谢

1 个答案:

答案 0 :(得分:1)

从TabPy Github文档:

  

“ Tableau希望SCRIPT返回与传递给TabPy的行相同或行数相同的单列。”

要发送给Python的ATTR([Stock ticker)参数实际上是在数组中发送的。如果您将Tableau中的数据想象成一个很大的交叉表,则实际上该参数对于每一行都是重复的。

我猜想,如果将[记录数]拖到工作表上,则会看到Tableau包含519733条记录-错误中的第一个数字。您的Python脚本正在尝试返回1612条记录,以匹配Tableau希望收到的519733。

我同意@cmcau的观点,全部或部分此类工作可以仅在Tableau中完成。代码看起来像这样-使用LOD函数:

{Fixed [Symbol]: SUM([Shares])}/85

请注意,上面的[Symbol]是一个字段,而不是参数

本质上是在做同样的事情-汇总每个交易品种的所有份额,然后除以85。

否则,在您的Python脚本中,尝试将arg从参数(对于所有行重复相同的值)更改为一个字段(然后该字段将特定于发送给Python的数组中的该行)。使Python返回的是与发送给Python的数组匹配的值的数组。不过请务必谨慎,因为在编写Python代码时,发送到Python的数组中的每一行读取都会导致整个CSV的查找。