我正在尝试使用给定的股票代码计算 Tableau 中股票的平均每日交易量。我已经将 Python 与 Tableau 连接起来;但是,计算失败,并且不断出现以下错误消息:
我在 Tableau 中创建了一个参数,让用户可以选择他们感兴趣的股票。参数的名称是 [Stock ticker]。谁能帮我解决这个问题?谢谢
来自 TabPy Github文档:
“Tableau 期望 SCRIPT 返回一个单列,其中包含单行或与传递给 TabPy 的行数相同的行。”
发送到 Python 的 ATTR([Stock ticker) 参数实际上是在一个数组中发送的。如果您将 Tableau 中的数据想象为一个大型交叉表,那么该参数实际上会针对每一行重复。
我猜如果您将 [Number of Records] 拖到工作表中,您会看到 Tableau 包含 519733 条记录——错误中的第一个数字。您的 Python 脚本正在尝试返回 1612 条记录以匹配 Tableau 期望接收的 519733。
我同意@cmcau 的观点,即全部或部分都可以单独在 Tableau 中完成。代码可能看起来像这样 - 使用 LOD 函数:
{Fixed [Symbol]: SUM([Shares])}/85
注意上面的 [Symbol] 是一个字段而不是一个参数
本质上是做同样的事情 - 将每个符号的所有股票汇总,然后除以 85。
否则,在您的 Python 脚本中尝试将您的 arg 从参数(所有行重复的相同值)更改为字段(然后将特定于发送到 Python 的数组中的该行。)这样做会导致 Python返回为与发送到 Python 的数组匹配的值数组。不过要小心,因为编写 Python 代码时,在发送到 Python 的数组中读取的每一行都会导致查找整个 CSV。