python tableau模块_在Tableau中使用Python(TabPy的使用)

本文介绍了如何将Python与Tableau结合使用,特别是通过TabPy库。详细阐述了TabPy的安装、启动、在Tableau中连接TabPy服务的过程,并展示了如何部署自定义Python函数到TabPy服务,以便在Tableau中调用。同时提供了完整的Python脚本示例,用于启动服务和函数部署。
摘要由CSDN通过智能技术生成

作为数据分析神器,Python、Tableau各有所长,Python功能全而强大,Tableau可视化效果好。而把二者结合,将产生更为丰富的效果。

这里需要Python的第三方库TabPy。启动Tabpy服务,在Tableau中连接此服务,则可以在Tableau中使用Python的各种函数功能。

更多信息可进入我的个人网站在Tableau中使用Python(TabPy的使用) | 墨痕​yuenshui.cn

TabPy安装

与其他Python包的安装一样,直接pip安装即可。

pip install tabpy

由于公司内网的限制,直接pip无法连接网络,增加代理即可安装成功!

pip install pytab --proxy="xxxx:xxx"

TabPy服务器启动

tabpy安装成功后,在python安装目录的tabpy文件夹(C:\ProgramData\Anaconda3\Lib\site-packages\tabpy_server\)下回有startup.bat文件,双击打开,即可启动tabpy服务。

为以后使用方便,可使用os将其写入到Python脚本中:

import os

os.system(r"C:\ProgramData\Anaconda3\Lib\site-packages\tabpy_server\startup.bat")

启动后,若输出以下结果,则说明TabPy服务启动成功!

Initializing TabPy...

Done initializing TabPy.

Web service listening on port 9004

Tableau连接TabPy服务

tabpy服务启动成功后,保持窗口不要关闭,此时服务器处于等待Tableau连接的状态。

打开Tableau软件,依次点击菜单栏 帮助-设置和性能-管理外部服务连接,即可打开服务器连接设置。

由于我们搭建的TabPy服务是建立在本地计算机上,因此服务器填写为“http://localhost”,端口为“9004”(这是默认的端口),如下所示。【全程需要保持tabpy服务一直开启,不要关闭】

Pytab自定义函数部署

连接TabPy服务后,可在Tableau中使用Python自带的各种函数。同样,我们可以设置自定义函数,然后部署到TabPy服务上。

例如,我们要定义2个列表相加的函数add,如下:

import numpy as np

def add(a,b):

return np.add(np.array(a),np.array(b)).tolist()

# 注意:由于要在tableau中使用函数的输出结果,需要有return值

在部署add函数之前,首先需要定义我们将要部署的服务器及端口

import tabpy_client

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

然后,使用deploy将函数部署到服务上。

client.deploy(name='add', obj=add, override=True)

上述命令运行后则马上结束了,不像TabPy那样一直处于后台运行的状态。不要担心,此时只要TapPy服务未关闭,add函数就已经部署成功啦~

TabPy服务搭建及函数部署汇总

为简化服务启动及部署的步骤,可将所有函数汇总到一个Python脚本中,这样运行一次代码即可把所有工作准备好。

主要是分为几个模块:TabPy启动函数

功能性函数自定义

已定义函数部署

schedule运行。由于Tabpy服务启动后需要在后台一直运行并保持不关闭,这里采用多线程与Sleep结合的方式,使服务启动后停顿一会再启动自定义函数的部署

import os

import time

from multiprocessing import Process

import tabpy_client

import numpy as np

# 服务启动

def starts():

os.system(r"C:\ProgramData\Anaconda3\Lib\site-packages\tabpy_server\startup.bat")

print('*'*30+'Succeed'+'*'*30)

# 自定义函数

def add(a,b):

return np.add(np.array(a),np.array(b)).tolist()

# 函数部署

def clients():

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

print('\n' + '*' * 50 + 'TabPy Deployment Succeeds' + '*' * 50 + '\n')

client.deploy(name='add', obj=add, override=True)

# Schedule脚本运行

if __name__ == '__main__':

s = Process(target=starts)

s.start()

time.sleep(5)

runs = Process(target=clients)

runs.start()

Tableau调用TabPy服务

Tableau主要通过在创建计算字段中使用TabPy服务中的函数,即由input通过python函数计算得到output。代码样式如下:

SCRIPT_REAL("return tabpy.query('add',_arg1,_arg2)['response']",sum(1),sum(2))

# 注意,这里一定要有return值

# 其中 _arg1和_arg2指要输入的参数

上述代码在Python也可直接运行,我觉得可以用来验证函数是否定义正确

r = client.query('add',[1,2,3,4],[12,3,4,5])['response']

print(r)

除了SCRIPT_REAL外,还有SCRIPT_BOOL,SCRIPT_INT,SCRIPT_STR等函数,对应输出不同的数据类型~

欢迎关注个人公众号“畅所欲言的小笔记”:talk_freely,每周定期更新文章!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值