0

我正在尝试使用 Tabpy 接口使用 Tableau 调用 python 函数,但我收到“没有名为 interface_v1 的模块”错误。我采取的步骤:

  1. 在此处使用 git 说明安装 tabpy
  2. 在名为 interface_v1.py 的文件中定义了我的函数。功能如下
def call_matlab(a):
    return a
  1. 启动 tabpy 服务器
  2. 打开一个新的 Tableau 工作簿并连接到服务器
  3. 创建了一个新的计算字段:
SCRIPT_INT("import interface_v1 as inter
return inter.call_matlab(_arg1)", SUM([Body]))

当我尝试使用计算字段时,我在 tabpy 服务器日志中收到上述错误 ModuleNotFoundError。我将工作簿和 python 文件放在同一个目录中,我也尝试将它放在 tabpy\modules\scripts 文件夹中。

注意:我没有在虚拟环境中使用 tabpy,而且我对 Tableau 很陌生,如果我遗漏了一些东西,我很抱歉。谢谢你的帮助。

4

1 回答 1

2

您最好的解决方案是将您的“interface_v1.py”部署为 tabpy 服务器上的端点。

这样做的好处是速度更快,加载到内存中等等......否则,您将需要探索将您引用的文件加载到 tabpy 正在运行的同一目录中。我强烈建议端点。

文档相当简单。

基本上,您将对您的信息执行以下操作:

from tabpy.tabpy_tools.client import Client

client = Client('http://localhost:9004/')

def call_matlab(a):
    return(a)
client.deploy('call_matlab', call_matlab, 'Pass data to call_matlab')

然后从画面你应该能够调用命名函数

script_int("tabpy.query('call_matlab',_arg1)",[COL_TO_SEND])

显然针对您的特定用例进行调整。

于 2020-07-19T01:56:34.670 回答