在 Tableau 的数据源选项卡中使用 SCRIPT_REAL

Using SCRIPT_REAL in Data Source Tab in Tableau

我想在我的数据源中创建一个计算字段 table(在我的工作簿的“数据源”选项卡中)。但是,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 计算新字段的值(按行)并将其添加到我的数据 table。我错过了什么?

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

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

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 提到的,这些计算是 "Table Calculations",默认情况下将在 "Table" 上计算。这意味着 Tableau 会立即将视图中的所有值传递给 TabPy。基本上,它传递一个数组,然后你得到一个数组(如上例所示)。如果您更改 "compute by" 设置,它可以传递部分数据,甚至可以单独传递每一行,但通常 "Table" 是最好的,因为它将所有数据一次传递给 TabPy,然后 TabPy 传递所有结果回到数组中。

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

更新:"table calculation" 在 "view" 中的数据上是 运行 它不能在基础数据中是 pre-computed 因为没有办法知道你是什么将可视化。如果您查看数据准备窗格,您将看到一条关于此的消息:

基本上,"table calculation" 是按需 运行 并且是短暂的。如果您希望保留这些值,那么我建议 运行 进行标准计算,或者 pre-computing 数据源中的值。 TabPy 依赖于这些短暂的计算类型,因此它有利于探索数据,但不利于持久化数据。