在您的流程中使用 Python 脚本

免责声明:本主题包括有关第三方产品的信息。请注意,尽管我们努力保持第三方内容的准确性,但我们在此处提供的信息可能会在 Python 发生变化时更改,恕不另行通知。有关最新信息,请查阅 Python 文档和支持。

Python 是广泛使用的高级编程语言,用于一般用途编程。通过借助 Tableau Prep Builder 将 Python 命令发送到外部服务,您可以执行诸如添加行号、进行字段排名、填写字段,以及执行可使用计算字段以其他方式执行的清理操作,从而轻松地扩展数据准备选项。

若要在流程中包括 Python 脚本,您需要在 Tableau Prep Builder 和 TabPy 服务器之间配置连接。然后,您可以使用 Python 脚本,通过 pandas 数据框架将支持的函数应用于流程中的数据。向流程中添加脚本步骤并指定要使用的配置详细信息、文件和函数时,系统会将数据安全传递给 TabPy 服务器,应用脚本中的表达式,并以可根据需要清理或输出的表的形式返回结果。

注意:若要在 Tableau Server(版本 2019.3 及更高版本)上运行包括脚本步骤的流程,Tableau Server 还必须连接到 TabPy 服务器。

先决条件

若要在您的流程中包括 Python 脚本,请完成以下设置。

  1. 下载并安装 Python(Link opens in a new window)。下载并安装适用于 Linux、Mac 或 Windows 的最新版本的 Python。

  2. 下载并安装 Tableau Python 服务器 (TabPy(Link opens in a new window))。按照用于安装 TabPy 的安装和配置说明进行操作。Tableau Prep Builder 使用 TabPy 以输入形式通过 TabPy 传递流程中的数据,应用您的脚本,然后将结果返回到流程。

  3. 安装 Pandas。运行 pip3 install pandas。您必须在脚本中使用 pandas 数据框架来与 Tableau Prep Builder 集成。

Tableau Server 配置 Tableau Python (TabPy) 服务器

如果要发布包括脚本步骤的流程并在 Tableau Server 上运行它们,您将需要在 TabPy 服务器和 Tableau Server 版本 2019.3 或更高版本之间配置连接。当前不支持在 Tableau Online 中运行包含脚本步骤的流程。

  1. 打开 TSM 命令行/shell。
  2. 输入以下命令以设置主机地址、端口值和连接超时:

    tsm security maestro-tabpy-ssl enable --connection-type {maestro-tabpy-secure/maestro-tabpy} --tabpy-host <TabPy IP address or host name> --tabpy-port <TabPy port> --tabpy-username <TabPy username> --tabpy-password <TabPy password> --tabpy-connect-timeout-ms <TabPy connect timeout>

    • 选择 {maestro-tabpy-secure} 以启用安全连接,或选择 {maestro-tabpy} 以启用不安全的连接。
    • 如果选择 {maestro-tabpy-secure},请在命令行中指定证书文件 -cf<certificate file path>
    • 以毫秒为单位指定 --tabpy-connect-timeout-ms <TabPy connect timeout>。例如,--tabpy-connect-timeout-ms 900000
  3. 若要禁用 TabPy 连接,请输入以下命令

    tsm security maestro-tabpy-ssl disable

创建 Python 脚本

创建脚本时,请包括一个指定 pandas (pd.DataFrame) 作为函数参数的函数。这将从 Tableau Prep Builder 中调用您的数据。您还需要使用支持的数据类型在 pandas (pd.DataFrame) 中返回结果。

例如,若要向流程中的一组字段添加编码,可以编写以下脚本:

def encode(input):     
  le = preprocessing.LabelEncoder()
  Return pd.DataFrame({
    'Opportunity Number' : input['Opportunity Number'],
    'Supplies Subgroup Encoded' : le.fit_transform(input['Supplies Subgroup']),
    'Region Encoded' : le.fit_transform(input['Region']),
    'Route To Market Encoded' : le.fit_transform(input['Route To Market']),
    'Opportunity Result Encoded' : le.fit_transform(input['Opportunity Result']),
    'Competitor Type Encoded' : le.fit_transform(input['Competitor Type']),
    'Supplies Group Encoded' : le.fit_transform(input['Supplies Group']),
})

支持以下数据类型:

Tableau Prep Builder 中的数据类型 Python 中的数据类型
字符串 标准 UTF-8 字符串
十进制 双精度
整数 整数
布尔值 布尔值
日期 ISO_DATE 格式“YYYY-MM-DD”的字符串,带有可选区域偏移。例如,“2011-12-03”是有效日期。
日期时间 ISO_DATE_TIME 格式“YYYY-MM-DDT:HH:mm:ss”的字符串,带有可选区域偏移。例如,“2011-12-03T10:15:30+01:00”是有效日期。

注意:日期和日期时间必须始终以有效字符串形式返回。

如果要返回不同于输入的字段,则需要在脚本中包含定义输出和数据类型的 get_output_schema 函数。否则,输出将使用输入数据中的字段,这些字段是从流程中脚本步骤之前的步骤中获取的。

在 get_output_schema 中指定字段的数据类型时,请使用以下语法:

Python 中的函数 生成的数据类型
prep_string () 字符串
prep_decimal () 十进制
prep_int () 整数
prep_bool () 布尔值
prep_date () 日期
prep_datetime () 日期时间

下面的示例演示添加到字段编码 Python 脚本的 get_output_schema 函数:

def get_output_schema():       
  return pd.DataFrame({
    'Opportunity Number' : prep_int(),
    'Supplies Subgroup Encoded' : prep_int(),
    'Region Encoded' : prep_int(),
    'Route To Market Encoded' : prep_int (),
    'Opportunity Result Encoded' : prep_int (),
    'Competitor Type Encoded' : prep_int()
    'Supplies Group Encoded' : prep_int()
})

向流程中添加脚本

启动 TabPy 服务器,然后完成以下步骤:

注意:TabPy 需要 tornado 程序包版本 5.1.1 才能运行。如果在尝试启动 TabPy 时遇到“'tornado.web' has no attribute 'asynchronous'”(“tornado.web”没有属性“asynchronous”)错误,请从命令行中运行 pip list,检查已安装的 tornado 的版本。如果安装了其他版本,请下载 tornado 程序包版本 5.1.1(Link opens in a new window)。运行 pip uninstall tornado 卸载当前版本,然后运行 pip install tornado==5.1.1 安装所需的版本。

  1. 打开 Tableau Prep Builder 并单击“添加连接” 按钮。

  2. 从连接器列表中,选择文件类型或托管您的数据的服务器。如果出现提示,请输入所需的信息以登录并访问数据。

  3. 单击加号 图标,并从上下文菜单中选择“添加脚本”

  4. 在“脚本”窗格中的“连接类型”部分,选择“Tableau Python (TabPy) 服务器”

  5. 单击“连接到 Tableau Python (TabPy) 服务器”,并输入连接详细信息。

    • 端口 9004 是 TabPy 的默认端口。
    • 如果服务器需要凭据,请输入用户名和密码。
    • 如果服务器使用 SSL 加密,请选中“需要 SSL”复选框,然后单击“自定义配置文件...”链接,为连接指定证书。

    注意:Tableau Prep Builder 未提供测试连接的方式。如果连接出现错误,将会显示一条错误消息。

  6. “文件名”部分,单击“浏览”选择您的脚本文件。
  7. 输入“函数名称”,然后按 Enter 运行脚本。

感谢您的反馈! 提交反馈时出错。请重试,或向我们发送消息