Tableau 高级 | TabPy使用

Tableau桌面版10.1以上的版本支持使用TabPy。

  • TabPy简介
  • TabPy安装与配置
    • 安装TabPy
    • 启动TabPy服务
  • TabPy的使用
    • TableauDesktop
    • TableauServer
    • TabPy的使用
    • 调试与打印日志
  • 参考

TabPy简介

TabPy实现了tableau的计算字段里嵌入python或R代码(可加入一些机器学习或数据处理的库)。它是一个基于Tornado和其他Python库的Python进程,将计算字段嵌入的代码传输到后台(web后台基于Tornado),由后台计算完后(可调用第三方库如机器学习相关的库)将结果再放回到前端展示。所以TabPy由两个主要组件构成:

  1. 基于Tornado的web服务进程(Server),运行REST API传回的python代码,执行完毕后,再传回前端。
  2. client library.

TabPy安装与配置

安装TabPy

$ cd /opt  # 一般自定义安装的软件安装包都放到这儿
$ sudo wget https://github.com/tableau/TabPy/archive/master.zip  # 下载TabPy
$ sudo unzip master.zip  # 解压到文件夹TabPy-master
$ sudo chown -R devops:devops TabPy-master  # 修改该目录权限为当前用户devops
$ cd TabPy-master
$ chmod u+x setup.sh
$ ./setup.sh  # 安装相应的第三方库,然后启动TabPy服务

启动TabPy服务

首次安装成功后,会启动TabPy服务,终端会打印出以后启动脚本的路径:

$ ./setup.sh
...
Successfully installed Tornado-JSON-1.3.2 future-0.16.0 futures-3.2.0 simplejson-3.15.0 tabpy-server-0.2
~~~~~~~~~~~~~~~  Installation completed  ~~~~~~~~~~~~~~~

From now on, you can start the server by running {路径}/startup.sh
...

如上有启动脚本的路径:{路径}/startup.sh

TabPy的使用

TableauDesktop

在TableauDesktop使用TabPy需进行以下配置。

  1. Tableau工具栏中依次点击Help->Settings and Performance->Manage External Service Connection。
  2. 键入服务器地址(如果TabPy安装在本地,服务器地址为localhost)和端口号(默认为9004)

TableauServer

发布到TableauServer,需要在服务器端配置连接Tabpy.

$ tabadmin stop
$ tabadmin set vizqlserver.allow_insecure_scripts true
$ tabadmin set vizqlserver.extsvc.host <ip address or host name of the machine hosting TabPy>
$ tabadmin set vizqlserver.extsvc.port <port for TabPy>
$ tabadmin configure
$ tabadmin start

TabPy的使用

当前Tableau主要通过4个不同返回类型的函数来调用TabPy来满足使用场景: SCRIPT_INT, SCRIPT_REAL, SCRIPT_STR, SCRIPT_BOOL。这四个函数内容大体都为:Python(或R)脚本字符串 + 参数1[参数2,参数n] 且都需要return。

# 计算字段1
SCRIPT_STR("
import requests
return [requests.get('http://url/no={}'.format(item)).text for item in _arg1]", ATTR([contract_no]))

# 计算字段2
SCRIPT_REAL("
import json
return [json.loads(item)['result']['refund_price']['breach_price']/100.00 for item in _arg1]", [response])

调试与打印日志

  • 在嵌入python代码里使用print函数。相关内容会打印到TabPy服务端的日志里,如:
SCRIPT_REAL("
print(_arg1) 
return sum(_arg1)", SUM([Sales]))
  • 将中间过程的数据打印到csv里

参考

  1. Tableau and Python Integration
  2. Using Python in Tableau Calculations
  3. Tableau Integration with Python - Step by Step
  4. 将表达式传递到外部服务
  5. 外部服务连接疑难解答
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值