当我使用 SQLWorkbench 运行一段 SQL 时,它执行成功。当我将其嵌入 Tableau Prep 流程(作为“复杂 SQL”)时,我收到以下几个错误:“系统错误:AqlProcessor 评估失败:[Amazon][Support] (40550) 转换规范的字符值无效。”想必这些与我对数据类型的处理有关。 我不明白的是,是什么环境差异会导致这样不同的结果?是因为 SQLWorkbench 和 Tableau Prep 使用不同的 SQL 解释器吗? 我环顾四周,其他网站上也出现了此类问题,例如https://community.tableau.com/s/question/0D54T00000F33mTSAR/mysql-query-works-in-workbench-but-not-tableau-prep。在这种情况下,得到的答复是 Tableau Prep 可能存在一些尚未解决的错误。
最好的猜测是,具有 DDL 知识的 Tableau 正在向 SQL 添加一些 CAST() 操作。 SQLWorkbench 更简单,并且将 SQL 按编写方式推送到 Redshift。 这是因为您的 SQL 中没有显式 CAST,但有一条标识 CAST() 的错误消息。
查看这两个查询的 stl_querytext,看看两个工作台是否以不同的方式将它们提供给 Redshift。 我怀疑这会给你一些继续下去的线索。
如果 SQL 中没有差异,则问题可能与用户/连接差异有关,并且可能需要有关该问题的更多信息。