Tableau 是一款广受数据从业者欢迎的数据可视化工具,也是招聘中常见的技能要求。Python 是广泛应用于数据科学的通用编程语言。将 Python 集成进 Tableau,能让用户构建复杂模型、运行复杂计算,并扩展 Tableau 的原生能力。
这对希望在仪表板中直接运用统计建模、机器学习和数据处理技术的数据分析师、数据科学家和商业智能从业者尤其有用。
本文是一篇将 Python 集成到 Tableau 的动手教程。您将学习如何设置环境、运行 Python 脚本、探索高级分析用例,并 排查常见问题。如果您想先了解 Tableau 的基础知识,请参阅此Tableau 入门课程 。
了解集成方式
Tableau 与 Python 的集成是通过一个外部服务实现的,即名为 TabPy(Tableau Python Server)的分析扩展。该扩展允许 Tableau 用户在其 Tableau 环境中运行 Python 脚本。
尽管您也许已经尝试过用 Python 生成文件再在 Tableau 中进行可视化,例如这篇使用 Python 与 Tableau 可视化数据的教程 ,但借助 TabPy 的连接,您可以在 Tableau 数据与 Python 脚本之间实现更顺畅的一体化流程。
TabPy 的作用
TabPy 充当 Tableau 与 Python 之间的桥梁。它采用客户端-服务器模型:Tableau(客户端)将脚本发送给 TabPy(服务器),后者在 Python 环境中执行并返回结果。
工作原理
Tableau Desktop 或 Server 通过计算字段发送脚本。
TabPy 执行 Python 代码。
结果返回到 Tableau,用于在可视化中呈现。
使用 eraser.io 生成的 Tableau、TabPy 与 Python 环境之间连接示意图
在 Tableau 中使用 Python 的好处
尽管 Tableau 功能强大,但其计算字段在处理复杂分析任务时有时会显得笨拙或效率不高。Python 集成为 Tableau 的原生功能带来多项优势,并让用户在数据处理上有更大的自由度。
例如,您可以用 Python 实现如下用例:
高级建模: 使用 scikit-learn、statsmodels 与 xgboost 等库完成回归、聚类与分类。
API 集成: 通过 Twitter、Reddit 或企业自定义服务等 API 获取实时数据。
动态处理: 运行可随用户输入或数据变化而调整的计算。您可以使用 pandas 或 numpy 等包,大幅提升 Tableau 仪表板的分析能力。
设置 TabPy
要在 Tableau 中开始使用 Python,您需要安装并配置 TabPy。这个步骤相当直接!核心流程是确保您的电脑上已安装 Python 与 Tableau。
系统要求与安装
先决条件:
Python 3.7+(确保已安装 pip)
Tableau Desktop 或 Tableau Server(建议 2020.1 或更高版本)
分步安装:
1. 安装 Python。 按照您的操作系统说明安装 Python。
2. 创建虚拟环境:
python3 -m venv tableau-env技术支持
3. 安装 TabPy(请先激活您的环境)。 您也可以此时安装 pandas、numpy、sklearn 等其他包。
pip install tabpy技术支持
4. 启动 TabPy:
tabpy技术支持
配置 TabPy
要自定义 TabPy,请编辑其配置文件。通过这些自定义,您可以更改 TabPy 监听信息的端口以及使用的传输协议。有关配置设置的更多信息,请参阅 TabPy 配置指南 。
示例配置文件(tabpy.conf)
下面是一个 TabPy 配置文件的示例。
[TABPY]
TABPY_PORT = 9004
TABPY_TRANSFER_PROTOCOL = http技术支持
网络与安全提示
由于 TabPy 依赖类似互联网的服务器连接以访问本地资源,建议遵循以下网络与安全建议:
确保选择在防火墙上开放但不对外部连接监听的端口。
设置如 NGINX 的反向代理并启用 SSL 以确保安全通信。
如果在 Tableau Server 上运行,请确保 TabPy 可从同一网络访问。
有关 TabPy 入门的更多细节,请参阅这篇 TabPy 入门教程 。
在 Tableau 中运行 Python
设置好 TabPy 后,您就可以将 Python 直接集成到 Tableau 仪表板中。您需要先在 Tableau 中启用扩展连接。打开 Tableau Desktop,转到“设置和性能”,选择“管理分析扩展连接”,并选择 TabPy。然后根据 TabPy 配置文件中的设置进行配置。
Tableau 中“管理分析扩展连接”界面( help.tableau.com )
脚本集成方法
在 Tableau 中运行 Python 脚本主要有三种方式:在计算字段内进行内联脚本计算、通过 Tableau 扩展进行预处理,以及使用已部署的模型端点。
1. 内联脚本计算
使用 Tableau 的 SCRIPT_REAL、SCRIPT_INT、SCRIPT_STR 或 SCRIPT_BOOL 函数。这些函数会将数据直接传递给 TabPy 服务器,而无需运行外部脚本。您可以直接在这些函数中编写 Python 代码。
示例:Z 分数标准化
SCRIPT_REAL(
"import scipy. stats as stats
return stats. zscore( _arg1) ",
SUM( [ Sales] )
)
技术支持
以上示例允许您从 scipy 导入 stats 包,并返回 Tableau 中 SUM([Sales]) 列的 Z 分数。
2. 使用表扩展进行预处理
使用 Tableau 扩展在 Tableau 外部用 Python 进行预处理,然后导入结果。
使用 Pandas/Numpy 进行数据预处理。
将结果保存为 CSV 或 API 端点。
将处理后的数据加载到 Tableau。
这些扩展在您的 Tableau 工作簿的工作表页面中启用。使用这些扩展时,您通过 TabPy 扩展输入完整脚本。脚本会对整个数据集运行,从而可以一次性预处理全部数据,而非逐行处理。这通常会生成一张单独的输出表。
工作表页面底部提供的表扩展功能。 ( 摘自 Tableau 文档 )
3. 部署的模型端点
最后一种方法也是最强大的之一。我们在 TabPy 服务器上托管一个用于运行脚本的模型。当需要在特定数据集上运行该模型时,再在 Tableau 中调用该脚本。
示例:将模型部署到 TabPy
第一步是创建一个由 TabPy 部署的文件。启动 TabPy 服务器(按照上文步骤)后,您可以用它来运行 Python 脚本。部署好该 Python 脚本后,我们会在 Tableau 中使用 SCRIPT_REAL 进行调用。
from tabpy. tabpy_tools. client import Client
import pickle
def predict_sales ( input_features) :
model = pickle. load( open ( model. pkl, ‘rb’) )
return model. predict( input_features)
client = Client( ‘http: // localhost: 9004 ’)
client. deploy( 'predict_sales' , predict_sales, 'Predict sales using linear model' , override= True ) 技术支持
Tableau 脚本调用:
SCRIPT_REAL("return tabpy.query(‘predict_sales’, _arg1)[‘response’]", SUM[Feature1])技术支持
性能优化技巧
与在 Tableau 外部运行 Python 脚本类似,我们也需要关注性能。在 Tableau 中运行数据时,有一些特别需要注意的点。
批处理 :通过分块处理数据来减少调用次数。通常更有利的是一次性处理整个数据集,而不是在 Tableau 调用时再处理。
结果缓存 :使用 Tableau 的缓存设置缓存静态结果。
向量化 :使用 NumPy/Pandas 的操作替代循环,以更快地执行。这些通常会将数学计算向量化,从而更高效。
如果使用 Tableau Server,您还可以通过连接池进一步优化。连接池的通用理念是维护与数据源的持久连接以减少开销。
您也可以对数据源与 TabPy 进行类似设置,避免 Tableau 在每次运行脚本或新计算时都“重新打开”对 TabPy 的连接。
高级分析用例
掌握基础后,您可以实现高度定制化的分析。这些方法涉及构建更高级的脚本,并以有趣的方式与您的仪表板交互。
实时预测分析
一种很好的模式是部署时间序列模型(例如 ARIMA、Prophet),并根据用户输入进行更新,就像这篇关于使用 TabPy 部署函数与 Prophet 预测模型 的指南一样。
构建好模型后,您可以将其打包为可由 TabPy 部署的脚本。随后,我们使用相同的 SCRIPT_REAL 函数将该模型连接到 Tableau,以调用已部署的模型。
用例:销售预测
在 Python 中构建并训练 Prophet 模型。
在 TabPy 上部署模型,并将历史销售数据作为特征。
随着仪表板筛选器变化,实时更新销售预测。
这样一来,当有人更改诸如地域、时间或产品等筛选条件时,Tableau 会基于这些新筛选实时生成新的预测。
安全与治理
鉴于我们要打开与 TabPy 的连接,务必遵循合适的安全与治理规范。
认证协议
TabPy 提供多种认证协议,帮助用户保障安全。支持并可配置如下方式:
基本认证(用户名/密码)
基于证书的认证
OAuth2 与安全令牌处理(适用于高级企业场景)
最佳实践是在生产环境中始终使用 HTTPS 与安全令牌。
数据保护措施
在连接 Tableau 与 TabPy 时,必须确保遵循适当的数据保护治理。这包括确保数据通过正确的连接通道传输、不可使用其他端口,以及数据在传输过程中始终加密。以下是一些最佳实践:
加密 Tableau 与 TabPy 之间的通信。
使用防火墙规则与访问控制。
在 TabPy 上启用审计日志以满足合规要求。 定期更新 Python 包以修补漏洞。
最后,如果您的组织需遵循特定的监管合规性,请务必继续遵循其最佳实践。确保遵守 GDPR 与 CCPA,通过匿名化与令牌化在发送至 TabPy 前保护个人可识别信息(PII)。此外,使用安全的中间结果存储以最大限度减少泄露风险。
故障排查与调试
问题在所难免,但大多都能迅速解决。
常见问题与解决方案
问题
解决方案
Tableau 无法连接到 TabPy
检查防火墙、确认端口(9004),并验证 TabPy 是否在运行
脚本返回 NULL 值
验证输入类型并检查 Python 错误日志
性能缓慢
优化发送至 Python 的数据、降低调用频率并使用缓存
如果您在编写代码时遇到问题,可参考以下调试步骤(适用于任何脚本):
在脚本中使用 print() 或日志(TabPy 日志会显示这些信息)。
在 Tableau 之外使用 Jupyter 测试 Python 脚本。
检查“我的 Tableau 存储库/Logs”中的 Tableau 日志。
结语
将 Python 与 Tableau 集成,可在可视化仪表板中直接释放高级分析实力。借助 TabPy,您可以:
执行复杂计算
部署并交互式使用机器学习模型
显著扩展 Tableau 的原生能力
无论您是在运行统计模型、处理文本数据,还是可视化预测结果,Python 都能为 Tableau 仪表板带来新的智能维度。
按照本指南中的步骤操作,您将能够借助 Python 实现更具洞察力、更灵活且更具交互性的分析。有关 Tableau 及其功能的更多信息,请查看以下指南:
Tableau 是一款广受数据从业者欢迎的数据可视化工具,也是招聘中常见的技能要求。Python 是广泛应用于数据科学的通用编程语言。将 Python 集成进 Tableau,能让用户构建复杂模型、运行复杂计算,并扩展 Tableau 的原生能力。
这对希望在仪表板中直接运用统计建模、机器学习和数据处理技术的数据分析师、数据科学家和商业智能从业者尤其有用。
本文是一篇将 Python 集成到 Tableau 的动手教程。您将学习如何设置环境、运行 Python 脚本、探索高级分析用例,并排查常见问题。如果您想先了解 Tableau 的基础知识,请参阅此Tableau 入门课程。
了解集成方式
Tableau 与 Python 的集成是通过一个外部服务实现的,即名为 TabPy(Tableau Python Server)的分析扩展。该扩展允许 Tableau 用户在其 Tableau 环境中运行 Python 脚本。
尽管您也许已经尝试过用 Python 生成文件再在 Tableau 中进行可视化,例如这篇使用 Python 与 Tableau 可视化数据的教程,但借助 TabPy 的连接,您可以在 Tableau 数据与 Python 脚本之间实现更顺畅的一体化流程。
TabPy 的作用
TabPy 充当 Tableau 与 Python 之间的桥梁。它采用客户端-服务器模型:Tableau(客户端)将脚本发送给 TabPy(服务器),后者在 Python 环境中执行并返回结果。
工作原理
使用 eraser.io 生成的 Tableau、TabPy 与 Python 环境之间连接示意图
在 Tableau 中使用 Python 的好处
尽管 Tableau 功能强大,但其计算字段在处理复杂分析任务时有时会显得笨拙或效率不高。Python 集成为 Tableau 的原生功能带来多项优势,并让用户在数据处理上有更大的自由度。
例如,您可以用 Python 实现如下用例:
scikit-learn、statsmodels与xgboost等库完成回归、聚类与分类。pandas或numpy等包,大幅提升 Tableau 仪表板的分析能力。设置 TabPy
要在 Tableau 中开始使用 Python,您需要安装并配置 TabPy。这个步骤相当直接!核心流程是确保您的电脑上已安装 Python 与 Tableau。
系统要求与安装
先决条件:
分步安装:
1. 安装 Python。 按照您的操作系统说明安装 Python。
2. 创建虚拟环境:
3. 安装 TabPy(请先激活您的环境)。 您也可以此时安装
pandas、numpy、sklearn等其他包。4. 启动 TabPy:
配置 TabPy
要自定义 TabPy,请编辑其配置文件。通过这些自定义,您可以更改 TabPy 监听信息的端口以及使用的传输协议。有关配置设置的更多信息,请参阅TabPy 配置指南。
示例配置文件(tabpy.conf)
下面是一个 TabPy 配置文件的示例。
网络与安全提示
由于 TabPy 依赖类似互联网的服务器连接以访问本地资源,建议遵循以下网络与安全建议:
有关 TabPy 入门的更多细节,请参阅这篇TabPy 入门教程。
在 Tableau 中运行 Python
设置好 TabPy 后,您就可以将 Python 直接集成到 Tableau 仪表板中。您需要先在 Tableau 中启用扩展连接。打开 Tableau Desktop,转到“设置和性能”,选择“管理分析扩展连接”,并选择 TabPy。然后根据 TabPy 配置文件中的设置进行配置。
Tableau 中“管理分析扩展连接”界面(help.tableau.com)
脚本集成方法
在 Tableau 中运行 Python 脚本主要有三种方式:在计算字段内进行内联脚本计算、通过 Tableau 扩展进行预处理,以及使用已部署的模型端点。
1. 内联脚本计算
使用 Tableau 的
SCRIPT_REAL、SCRIPT_INT、SCRIPT_STR或SCRIPT_BOOL函数。这些函数会将数据直接传递给 TabPy 服务器,而无需运行外部脚本。您可以直接在这些函数中编写 Python 代码。示例:Z 分数标准化
以上示例允许您从
scipy导入stats包,并返回 Tableau 中SUM([Sales])列的 Z 分数。2. 使用表扩展进行预处理
使用 Tableau 扩展在 Tableau 外部用 Python 进行预处理,然后导入结果。
这些扩展在您的 Tableau 工作簿的工作表页面中启用。使用这些扩展时,您通过 TabPy 扩展输入完整脚本。脚本会对整个数据集运行,从而可以一次性预处理全部数据,而非逐行处理。这通常会生成一张单独的输出表。
工作表页面底部提供的表扩展功能。(摘自 Tableau 文档)
3. 部署的模型端点
最后一种方法也是最强大的之一。我们在 TabPy 服务器上托管一个用于运行脚本的模型。当需要在特定数据集上运行该模型时,再在 Tableau 中调用该脚本。
示例:将模型部署到 TabPy
第一步是创建一个由 TabPy 部署的文件。启动 TabPy 服务器(按照上文步骤)后,您可以用它来运行 Python 脚本。部署好该 Python 脚本后,我们会在 Tableau 中使用
SCRIPT_REAL进行调用。Tableau 脚本调用:
性能优化技巧
与在 Tableau 外部运行 Python 脚本类似,我们也需要关注性能。在 Tableau 中运行数据时,有一些特别需要注意的点。
如果使用 Tableau Server,您还可以通过连接池进一步优化。连接池的通用理念是维护与数据源的持久连接以减少开销。
您也可以对数据源与 TabPy 进行类似设置,避免 Tableau 在每次运行脚本或新计算时都“重新打开”对 TabPy 的连接。
高级分析用例
掌握基础后,您可以实现高度定制化的分析。这些方法涉及构建更高级的脚本,并以有趣的方式与您的仪表板交互。
实时预测分析
一种很好的模式是部署时间序列模型(例如 ARIMA、Prophet),并根据用户输入进行更新,就像这篇关于使用 TabPy 部署函数与 Prophet 预测模型的指南一样。
构建好模型后,您可以将其打包为可由 TabPy 部署的脚本。随后,我们使用相同的
SCRIPT_REAL函数将该模型连接到 Tableau,以调用已部署的模型。用例:销售预测
这样一来,当有人更改诸如地域、时间或产品等筛选条件时,Tableau 会基于这些新筛选实时生成新的预测。
安全与治理
鉴于我们要打开与 TabPy 的连接,务必遵循合适的安全与治理规范。
认证协议
TabPy 提供多种认证协议,帮助用户保障安全。支持并可配置如下方式:
最佳实践是在生产环境中始终使用 HTTPS 与安全令牌。
数据保护措施
在连接 Tableau 与 TabPy 时,必须确保遵循适当的数据保护治理。这包括确保数据通过正确的连接通道传输、不可使用其他端口,以及数据在传输过程中始终加密。以下是一些最佳实践:
最后,如果您的组织需遵循特定的监管合规性,请务必继续遵循其最佳实践。确保遵守 GDPR 与 CCPA,通过匿名化与令牌化在发送至 TabPy 前保护个人可识别信息(PII)。此外,使用安全的中间结果存储以最大限度减少泄露风险。
故障排查与调试
问题在所难免,但大多都能迅速解决。
常见问题与解决方案
问题
解决方案
Tableau 无法连接到 TabPy
检查防火墙、确认端口(9004),并验证 TabPy 是否在运行
脚本返回 NULL 值
验证输入类型并检查 Python 错误日志
性能缓慢
优化发送至 Python 的数据、降低调用频率并使用缓存
如果您在编写代码时遇到问题,可参考以下调试步骤(适用于任何脚本):
结语
将 Python 与 Tableau 集成,可在可视化仪表板中直接释放高级分析实力。借助 TabPy,您可以:
无论您是在运行统计模型、处理文本数据,还是可视化预测结果,Python 都能为 Tableau 仪表板带来新的智能维度。
按照本指南中的步骤操作,您将能够借助 Python 实现更具洞察力、更灵活且更具交互性的分析。有关 Tableau 及其功能的更多信息,请查看以下指南: