Pentaho 动态 SQL 查询
Pentaho Dynamic SQL queries
我有一个正在开发的 Pentaho CDE 项目,我想显示一个图表,该图表取决于几个参数(如月、年、精确日期、国家等)。但是当我想 "add" 我的查询的另一个参数时,它不再起作用了......所以我确定我做错了什么但是什么?请查看参数月份,例如:
- 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
感谢您的帮助!
尝试简化该查询直到它运行 returns 然后从那里开始工作。
以下是我会调查的一些可能原因:
- 我认为如果
${parameter}
表达式是字符串,则需要用单引号括起来;
"All"
大概应该是'All'
(用单引号代替双引号);
- 避免多行注释。我不认为你可以在 CDE SQL 查询中使用多行注释,尽管 -- 对于单行注释通常是可行的。
- 注意多值参数;它们作为数组传递,CDA 会将其转换为逗号分隔的列表。尝试使用单值参数,使用 = 而不是 IN。
我有一个正在开发的 Pentaho CDE 项目,我想显示一个图表,该图表取决于几个参数(如月、年、精确日期、国家等)。但是当我想 "add" 我的查询的另一个参数时,它不再起作用了......所以我确定我做错了什么但是什么?请查看参数月份,例如:
- 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
感谢您的帮助!
尝试简化该查询直到它运行 returns 然后从那里开始工作。
以下是我会调查的一些可能原因:
- 我认为如果
${parameter}
表达式是字符串,则需要用单引号括起来; "All"
大概应该是'All'
(用单引号代替双引号);- 避免多行注释。我不认为你可以在 CDE SQL 查询中使用多行注释,尽管 -- 对于单行注释通常是可行的。
- 注意多值参数;它们作为数组传递,CDA 会将其转换为逗号分隔的列表。尝试使用单值参数,使用 = 而不是 IN。