Pentaho动态SQL查询

时间:2015-07-02 14:09:17

标签: sql pentaho-cde

我正在开发一个Pentaho CDE项目,我希望显示一个图表,该图表取决于几个参数(如月,年,精确日期,国家等)。但是,当我想在我的查询中“添加”另一个参数时,它不再起作用......所以我确定我做错了但是什么?请查看参数月份,例如:

  • Select_months_query :(这是我的复选框)

SELECT "All" AS MONTH(TransactionDate) UNION SELECT DISTINCT MONTH(TransactionDate) FROM order ORDER BY MONTH(TransactionDate);

  • Select_barchart_query :(这是我的图表,不介意其他表格)

SELECT pginit.Family, SUM(order.AmountEUR) AS SALES FROM pginit INNER JOIN statg ON pginit.PG = statg.PGInit INNER JOIN order ON statg.StatGroup = order.StatGroup WHERE (MONTH(order.TransactionDate) IN (${month}) OR "All" IN (${month}) OR ${month} IS NULL) AND /*/* Apply the same pattern for another parameter (like year for example) *\*\ GROUP BY pginit.Family ORDER BY SALES;

(此处,$ {month}是CDE中的参数)

关于如何做的任何想法? 我在那里读到了一些据说使用CASE条款的东西......但是怎么样? http://forums.pentaho.com/showthread.php?136969-Parametrized-SQL-clause-in-CDE&highlight=dynamic

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

尝试简化该查询,直到它运行并返回一些内容并从那里开始工作。

以下是我可能会考虑的一些事情:

  1. 如果他们是字符串,我认为你需要在${parameter}个表达式附加单引号;
  2. "All"应该是'All'(单引号而不是双引号);
  3. 避免多行评论。我不认为您可以在CDE SQL查询中使用多行注释,但是 - 对于单行注释通常有效。
  4. 注意多值参数;它们作为数组传递,CDA将转换为逗号分隔的列表。尝试使用单值参数,使用=而不是IN。