1

对于学生项目,我们正在与 Pentaho CDE 合作创建仪表板。起初它工作正常,但现在我们正在添加多个选择组件。我们将选择组件的参数插入到 Where 语句中的 SQL 查询中,但现在我们遇到了问题,即不可能在一个选择组件中选择所有元素,而在其他选择组件中只选择一个。我们添加的参数越多,样本空间就越小,因为我们无法找出如何在一个选择组件中选择所有选项并将其全部发送到查询。是否可以在 CDE 中向选择组件添加“选择所有元素选项”?或者甚至停用选择组件并将此停用发送到 SQL 查询?

我们注意到有一个多选组件,但我们无法处理它所需的自定义参数。如果它与选择组件一起使用会很好。

预先感谢您的支持。

4

3 回答 3

1

使用 SQL 表达式 CASE:

SELECT * FROM table WHERE city LIKE (case when ${city} = 'ALL' then '%' ELSE ${city} end)

于 2015-11-17T18:05:57.800 回答
0

两种方法:

  1. 在您的单个选择查询中添加(可能是硬编码)“全部”选项并让一些​​ JS 逻辑学习如何处理它;

  2. 使用多选组件。但是,请记住,多选组件上的参数值在 javascript 中存储为数组,而参数值将作为逗号分隔的列表传递给查询。因此,如果您想在 SQL 查询中使用多选参数,您很可能会在 IN 条件中使用它。

最后,检查您的 pentaho.log 文件。错误和异常将记录在那里。

于 2014-09-04T07:52:18.763 回答
0

如果你不想使用like。

SELECT * from table_name where column_name = case when ${param} = 'ALL' then column_name else ${param} end
于 2016-08-18T10:25:16.383 回答