内容:

分析扩展程序连接疑难解答

  • 版本 :2022.1 及更高版本

适用于: Tableau Desktop

本主题描述 Tableau 连接到外部分析扩展程序服务时可能会收到的错误。

注意:Tableau 技术支持人员无法协助编写、调整外部脚本或排除其问题。

与任何分析扩展程序通信时可能会发生的错误

错误消息注释
传递给 SCRIPT 函数的参数是不支持的类型。

Tableau 只能将以下 Tableau 数据类型导出到 R:

  • 数字(小数)

  • 数字(整数)

  • 布尔值

  • 字符串

  • 日期

  • 日期/时间

SCRIPT 函数返回了意外数量的结果。函数预期 %2 个值;返回了 %1 个值。脚本结果必须是为所有行复制的长度为 1 的标量或矢量,或者长度等于 Tableau 结果表中的行数的矢量。
证书文件对指定的连接 (%1%2:%3) 无效。检查是否为服务器和客户端使用了相同的证书、证书文件未损坏并且日期有效。验证用于连接到外部服务的证书的编码和格式正确无误。您必须使用有效的 PEM 编码 x509 证书(扩展名为 .crt)进行连接。
SCRIPT 函数返回的结果是意外类型。

在收到无效数据类型时出现。Tableau 只能从 Rserve 服务器导入以下数据类型:

  • RDouble

  • RInteger

  • RLogical

  • RCharacter

对于 TabPy,Tableau 只能导入以下数据类型:

  • 浮点数列表

  • 整数列表

  • 布尔值列表

  • 字符串列表

如果结果为 null 或存在 Tableau 无法从外部服务器收集到说明的脚本执行错误,也会报告此错误。

与外部服务通信时出错。Tableau 在“try”外部函数内运行所有外部脚本。当“try”函数捕获计算错误时,会显示此错误以及外部服务生成的错误消息。
此外部服务连接不支持身份验证。请尝试在不指定密码的情况下进行连接。
身份验证失败。请提供有效的外部服务用户名和密码。
外部服务中启用的身份验证类型不受支持。禁用外部服务身份验证或更改为纯文本密码身份验证。
未配置外部服务连接。请指定服务器名称并重试。请参见使用分析扩展程序传递表达式
计算“%1”包含一个需要内部服务连接的 SCRIPT_ 函数。请配置外部服务连接以启用自定义脚本。请参见使用分析扩展程序传递表达式
尝试发布的工作簿包含需要外部服务连接的 SCRIPT_ 函数。公共工作簿中不允许包含自定义脚本。无法将包含外部服务脚本的公共工作簿发布到 Tableau Public。
Tableau Public 不支持运行需要外部服务的自定义脚本。若要利用外部服务,请升级到 Tableau Desktop Professional Edition。“Tableau Public”(在此错误中)是指 Tableau Desktop Public。
Tableau Reader 不支持运行需要外部服务的自定义脚本。若要利用外部服务,请升级到 Tableau Desktop Professional Edition。无法在 Tableau Reader 中查看包含外部服务脚本的工作簿。

只有 Rserve 服务器才可能会出现的错误

错误消息注释
无法识别 Rserve 签名。Rserve 标头签名必须为“Rsrv”。
无法识别 Rserve 版本。Rserve 标头版本必须为“0103”。
无法识别 Rserve 协议。Rserve 标头协议必须为“QAP1”。
在连接到 R 时身份验证失败。Tableau 尝试向 Rserve 进行身份验证但失败。请确认您输入了有效密码。
参数/主体中的字节数不正确。
Tableau 读取的数据长度不等于标头承诺的长度。
无法识别响应类型。读取结果时的传输协议类型不是预期的 SEXP。
用于测量从或向 Rserve 发送的数据长度的数字过大,可能指示协议标头已损坏。
Rserve 命令无效。Tableau 可能错误地实施了 Rserve 协议。
来自服务器的响应是错误“<< (uint32_t)status <<”。有关详细信息,请参见 Rsrv.h。各种错误条件记录在 Rsrv.h 中的注释中。
标头偏移过长。这可能由于乱码标头与响应数据的偏移过大造成的。
Rserve 套接字失败。登录、脚本计算、读取挂起检查、结果读取或 Tableau 字段到 R 脚本参数赋值引发非标准异常。
外部服务使用不受支持的身份验证类型。若要同时支持通过启用 SSL 的方式和明文方式连接到 Rserve 实例,Rserve 服务器管理员必须将以下条目添加到 Rserve 服务器上的 Rserve 配置文件中:

plaintext enable

RServe 上发生了加密系统错误。RServe 的加密系统发生错误。有关详细信息,请检查 RServe 日志。
RServe 由于安全违规而发起关闭命令。RServe 由于安全违规而关闭了连接。有关详细信息,请检查 RServe 日志。
为安全连接设置了“外部服务配置”,但缺少证书。建立与外部服务的安全连接时,需要上载您希望用于对此外部服务签名的证书。与未使用此证书签署的服务器的连接将被拒绝。这可确保仅将数据发送到受信任的服务器。
证书文件对指定的连接 (%1%2:%3) 无效。检查是否为服务器和客户端使用了相同的证书、证书文件未损坏并且日期有效提供的证书对于此连接配置无效。检查以确定它是否与用于签署外部服务服务器的证书匹配、它是否为 PEM 编码,并且对于当天的日期有效。
外部服务连接证书无效提供的证书无效。检查以确定证书是否为 PEM 编码,并且它对于当天的日期有效。
外部服务连接未能创建 SSL/TLS 上下文Tableau 未能为此给定外部服务配置初始化安全环境。检查以确定主机和端口是否正确,并且证书有效。
外部服务未能与 SSL/TLS 连接Tableau 未能建立与外部服务的安全连接。验证外部服务是否配置为支持安全连接,并且提供的证书是否与用于签署外部服务的证书匹配。
无法识别外部服务服务器协议主机前面附带了 Tableau 无法识别或不支持的协议。如果连接到 RServe,则不需要任何协议。如果连接到 TabPy,则在建立明文连接时需要 HTTP 协议,在建立安全连接时需要 HTTPS 协议。

其他问题

SCRIPT 函数甚至在计算结果为 false 的逻辑语句中运行

将表达式发送给运行的外部服务实例的函数将会执行,即使它位于本该阻止它执行的逻辑语句中也是如此。IF、IIF 和 CASE 之类的逻辑函数就是如此。例如:

IF 1==0 THEN
[[R script code]]
ELSE
"1 does not equal 0"
END