为什么我的自定义SQL查询(在Tableau之外工作正常)在Tableau中失败?

Jas*_*ahn 1 mysql tableau-api

我的查询在mysql客户端(Heidi)中运行正常但在Tableau中出错.我看过这里和Tableau社区网站,我看到的唯一建议是取出分号.我试过这个无济于事.我通过Tableau与我的数据库连接得很好 - 我可以看到表和其他查询运行没有问题.关于这可能是什么问题的任何想法?我正在运行Tableau 8.2.谢谢!

SET @sql=NULL;

SELECT
Group_Concat(Distinct CONCAT(
'MAX(IF(wsd.cid = ''', wc.cid, ''', wsd.data, NULL)) AS    ''',wc.name,'',''''))
INTO @sql
FROM webform_component wc
WHERE wc.nid = 107;

SET @sql = Concat('SELECT wsd.sid,',@sql,'
FROM webform_submitted_data wsd
LEFT Join webform_component AS wc ON wsd.cid=wc.cid
WHERE wsd.nid = 107 AND wsd.sid >= 14967
GROUP BY wsd.sid');

PREPARE stmt FROM @sql;
EXECUTE stmt;
DEALLOCATE PREPARE stmt; 
Run Code Online (Sandbox Code Playgroud)

Jas*_*ahn 8

事实证明,当连接到mySQL数据库时,Tableau SQL不支持此类查询.我收到的建议是尝试将其重新格式化为嵌套子查询.

当我询问是否可以使用上述查询时,这是我从Tableau的程序经理那里得到的答案:

"你不能.它应该是一个返回结果集的查询.Tableau将自定义SQL查询包装为子查询.如果你的SQL不能这样对待,你将得到错误.

我们在支持"初始SQL"的数据源上支持这种结构.例如Teradata,Aster ......

它允许您预先运行任何SQL,创建临时表等,因此称为初始SQL.

然后,您可以编写一个查询作为连接的一部分,将在"初始SQL"之后进行评估,并利用在初始SQL步骤中创建的对象."