问题描述
源数据库-Teradata
BI工具-Tableau
我已经在Tableau中创建了一个报表,在其中使用自定义sql查询获取某些数据时,该查询正在从Teradata数据库访问数据。以下面的sql查询为例:
Select Tab1.Col1,Tab1.Col2,Tab2.Col3 from Tab1
inner join Tab2 on Tab1.col1 = Tab2.col1
where Tab1.Col1 in ('Alpha','Beta','Gamma')
Tableau报告工作正常,并且可以检索数据。
在Tableau中创建一个名称为P_RAYS的字符串参数。并将此参数传递给自定义sql查询,如下所示:
Select Tab1.Col1,Tab2.Col3 from Tab1
inner join Tab2 on Tab1.col1 = Tab2.col1
where Tab1.Col1 in (<Parameters.P_RAYS>)
当仅将Alpha传递给参数时,tableau会检索数据并准确生成报告,但是当将Alpha,Beta和Gamma传递给参数时,tableau中不会返回任何数据。
看起来像在自定义sql查询中,参数被错误地处理为“ Alpha,Beta,Gamma”而不是“ Alpha”,“ Beta”,“ Gamma”
解决方法
解决此问题的最简单方法是创建多个参数,每个值一个,然后在 SQL In 语句中传递每个参数。如果您总是要传递少量参数(,
这就是我对带有“|”的参数所做的分隔符:
SELECT [COL1],[COL2],[COL3],[COL4]
FROM [TABLE1]
WHERE
COL1 IN(SELECT * FROM string_split(<Parameters.MultiValueFilterParam1>,'|')) AND
COL2 IN(SELECT * FROM string_split(<Parameters.MultiValueFilterParam2>,'|')) AND
COL3 = <Parameters.SingleValueFilterParam1> AND
COL4 BETWEEN <Parameters.RangeValueFilterParamMIN> AND <RangeValueFilterParamMIN>