【问题标题】:Using SCRIPT_REAL in Data Source Tab in Tableau在 Tableau 的“数据源”选项卡中使用 SCRIPT_REAL
【发布时间】:2019-06-04 10:30:08
【问题描述】:

我想在我的数据源表中创建一个计算字段(在我的工作簿的数据源选项卡中)。但是,Tableau 抱怨该字段包含聚合计算数据,因此它取决于可视化的详细程度。这是我的脚本(使用 TabPy):

SCRIPT_REAL("import numpy as np 
return (2*np.array(_arg1)).tolist()",
SUM([Wind Speed]))

在这种情况下,该计算字段中的所有行都显示为null

但是,当我将 SCRIPT_REAL 替换为以下内容时,它可以工作:

2*SUM([Wind Speed])

然而,在这两种情况下,我都使用 SUM [聚合函数],那么为什么它在这种情况下有效,但在我使用 SCRIPT_REAL 时却无效?

我要做的就是使用 SCRIPT_REAL 计算新字段的值(按行)并将其添加到我的数据表中。我错过了什么?

【问题讨论】:

  • Script_Real 是一个表格计算。阅读有关表计算的手册,尤其是分区和寻址
  • @AlexBlakemore 谢谢——那么,如果我正确使用分区和寻址,这可以在“数据源”选项卡中工作吗?
  • 应该可以。表格计算可能有点棘手,除了让公式正确之外,还有更多的旋钮需要转动。其中最重要的是理解分区和寻址是如何工作的。熟悉这些概念,你应该没问题。

标签: tableau-api tabpy


【解决方案1】:

在不知道您的数据是什么样子的情况下,很难说出发生了什么。计算有效:

在调试这类问题时有一个很大帮助的事情是在返回数据之前打印数据,以便您可以在控制台中检查它。

SCRIPT_REAL(
"import numpy as np
values = (2*np.array(_arg1)).tolist()
print values
return values"
,
SUM([Value])
)

然后您可以查看 TabPy 并查看:

INFO:__main__:{"INFO": "Initializing TabPy..."}
INFO:__main__:{"INFO": "Done initializing TabPy."}
INFO:__main__:{"INFO": "Web service listening on port 9004"}
INFO:__main__:{"INFO": "function to evaluate=def _user_script(tabpy, _arg1):\n import numpy as np\n values = (2*np.array(_arg1)).tolist()\n print values\n return values\n"}
[14, 20, 32, 44, 58, 52, 40, 66]
INFO:tornado.access:200 POST /evaluate (172.17.0.1) 53.75ms

因此该计算会计算值:[14, 20, 32, 44, 58, 52, 40, 66]

正如 Alex Blakemore 所提到的,这些计算是“表格计算”,默认情况下将在“表格”上进行计算。这意味着 Tableau 将一次将视图中的所有值传递给 TabPy。基本上,它传递一个数组,然后你得到一个数组(就像上面的例子一样)。如果您更改“计算依据”设置,它可以传递数据的一部分,甚至单独传递每一行,但通常“表格”是最好的,因为它一次将所有数据传递给 TabPy,然后 TabPy 将所有结果传递回数组。

==========================================

更新:在“视图”中的数据上运行“表格计算”,它不能在基础数据中预先计算,因为无法知道您将要可视化的内容。如果您查看数据准备窗格,您将看到一条关于此的消息:

基本上,“表格计算”是按需运行的,并且是短暂的。如果您希望这些值保持不变,那么我建议您运行标准计算,或预先计算数据源中的值。 TabPy 依赖于这些临时类型的计算,因此它适用于探索数据,但不适用于持久化数据。

【讨论】:

  • 谢谢。正如您所演示的,该脚本在应用于可视化/图表视图时可以正常工作。我的问题是,当您尝试在“源数据”选项卡(作为计算字段)上的基础数据表中输入相同的确切脚本时,Tableau 告诉我该公式使用聚合数据,因此取决于可视化。注意:这不是错误,它只是拒绝运行脚本,直到我在实际视图中使用该计算字段(就像您刚刚放在一起的图表)。即,它似乎要求脚本是“架子”的一部分(使用 Tableau 语言)。
  • 我希望我的评论能澄清这个问题。当我将计算移到架子上时它工作正常(在某些可视化上),当尝试使用基于这个完全相同的脚本的计算字段来扩充我的基础数据表(在数据源选项卡中)时它不会工作。
  • 谢谢!解决了我的问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-07-14
  • 1970-01-01
  • 2017-10-31
相关资源
最近更新 更多