Pentaho 动态 SQL 查询

Pentaho Dynamic SQL queries

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

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

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

感谢您的帮助!

尝试简化该查询直到它运行 returns 然后从那里开始工作。

以下是我会调查的一些可能原因:

  1. 我认为如果 ${parameter} 表达式是字符串,则需要用单引号括起来;
  2. "All"大概应该是'All'(用单引号代替双引号);
  3. 避免多行注释。我不认为你可以在 CDE SQL 查询中使用多行注释,尽管 -- 对于单行注释通常是可行的。
  4. 注意多值参数;它们作为数组传递,CDA 会将其转换为逗号分隔的列表。尝试使用单值参数,使用 = 而不是 IN。