Tableau 仪表板中的自定义 SQL 查询能否接受参数中的值列表?
Can the Custom SQL Query in a Tableau Dashboard accept a list of values in a Parameter?
我有一个 Tableau 仪表板通过自定义 SQL 查询从 Vertica 数据库绘制数据。
数据库table 包含超过 1 亿行,列 COL1 表示为主键。每个 COL1 值恰好对应一行数据。因此 COL1 对于所有行都是唯一的。
下面的自定义 SQL 查询会在参数更新时刷新仪表板。
SELECT COL1, COL2, COL3, COL4, COL5 FROM TABLE WHERE COL1=<Parameters.Col1Param>
仪表板用户是否可以输入多个值来获取多于 1 行的数据?
我试过使用 IN 条件如下:
SELECT COL1, COL2, COL3, COL4, COL5 FROM TABLE WHERE COL1 IN (<Parameters.Col1Param>)
但是,我似乎无法使用参数值 Param1;Param2;Param3
或 Param1,Param2,Param3
。
我还尝试包括 COL1 的所有值并允许用户即时过滤,但是数据库 table 太大(超过 100M 行),仪表板无法将数据加载到内存。
一如既往,在 Whosebug 上发布问题几分钟后,我就找到了我的问题的合理答案。
可以在这里找到答案:
SELECT COL1, COL2, COL3, COL4, COL5 FROM TABLE WHERE COL1 IN (
SELECT SPLIT_PART(<Parameters.Col1Param>, ';', row_num) params
FROM (SELECT ROW_NUMBER() OVER () AS row_num FROM tables) row_nums
WHERE SPLIT_PART(<Parameters.Col1Param>, ';', row_num) <> ''
)
我有一个 Tableau 仪表板通过自定义 SQL 查询从 Vertica 数据库绘制数据。
数据库table 包含超过 1 亿行,列 COL1 表示为主键。每个 COL1 值恰好对应一行数据。因此 COL1 对于所有行都是唯一的。
下面的自定义 SQL 查询会在参数更新时刷新仪表板。
SELECT COL1, COL2, COL3, COL4, COL5 FROM TABLE WHERE COL1=<Parameters.Col1Param>
仪表板用户是否可以输入多个值来获取多于 1 行的数据?
我试过使用 IN 条件如下:
SELECT COL1, COL2, COL3, COL4, COL5 FROM TABLE WHERE COL1 IN (<Parameters.Col1Param>)
但是,我似乎无法使用参数值 Param1;Param2;Param3
或 Param1,Param2,Param3
。
我还尝试包括 COL1 的所有值并允许用户即时过滤,但是数据库 table 太大(超过 100M 行),仪表板无法将数据加载到内存。
一如既往,在 Whosebug 上发布问题几分钟后,我就找到了我的问题的合理答案。
可以在这里找到答案:
SELECT COL1, COL2, COL3, COL4, COL5 FROM TABLE WHERE COL1 IN (
SELECT SPLIT_PART(<Parameters.Col1Param>, ';', row_num) params
FROM (SELECT ROW_NUMBER() OVER () AS row_num FROM tables) row_nums
WHERE SPLIT_PART(<Parameters.Col1Param>, ';', row_num) <> ''
)