【问题标题】:Pentaho Dynamic SQL queriesPentaho 动态 SQL 查询
【发布时间】:2015-09-20 02:50:40
【问题描述】:

我有一个 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

感谢您的帮助!

【问题讨论】:

    标签: sql pentaho-cde


    【解决方案1】:

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

    以下是一些我认为可能的原因:

    1. 如果${parameter} 表达式是字符串,我认为您需要在它们周围加上单引号;
    2. "All" 应该是 'All'(单引号而不是双引号);
    3. 避免使用多行 cmets。我不认为您可以在 CDE SQL 查询中使用多行 cmets,尽管单行 cmets 通常可以工作。
    4. 注意多值参数;它们作为数组传递,CDA 将其转换为逗号分隔的列表。尝试使用单值参数,使用 = 而不是 IN。

    【讨论】:

    • 我先把它简化了再发到这里。我还看到 cmets(即使是非多行的)在那里不起作用。但我不知道双引号/单引号:我认为它在 SQL 中是一样的。关于多参数,我也看到它变成了一个用逗号分隔的列表(如果不使用 javascript 中的字符串函数,这有点烦人)谢谢你的回答。我会同意该评论与 pentaho 论坛的链接,在那里有人引导我提出一些好主意,也许它会帮助未来的用户:[link](forums.pentaho.com/showthread.php?189483-Dynamic-SQL -查询)
    猜你喜欢
    • 2015-06-27
    • 1970-01-01
    • 2020-01-19
    • 1970-01-01
    • 2014-09-13
    • 2010-09-20
    • 2017-01-11
    • 1970-01-01
    相关资源
    最近更新 更多