Pentaho CDE SQL查询与数字参数

时间:2018-02-07 11:28:47

标签: sql pentaho dashboard pentaho-cde

我想知道是否可以执行SQL查询并将其传递给数字参数。我们假设我有以下查询:

SELECT
    CONCAT(cuatrimestre,' Cuatrimestre') As quarter
,   ROUND(SUM(fact_Ventas.cantidad * precioUnitario),0) as amount
FROM fact_Ventas 
INNER JOIN dim_Tiempos ON 
fact_Ventas.idAnio = dim_Tiempos.idAnio AND 
fact_Ventas.idMes = dim_Tiempos.idMes AND 
fact_Ventas.idDia = dim_Tiempos.idDia
INNER JOIN dim_Clientes ON dim_Clientes.idCliente = fact_Ventas.idCliente
INNER JOIN dim_Productos ON dim_Productos.idProducto = fact_Ventas.idProducto
WHERE 
    CAST(fact_Ventas.idAnio As Char) LIKE ${paramAnio} AND
    CAST(fact_Ventas.idMes As Char) LIKE ${paramMes} AND
    CAST(fact_Ventas.idVendedor As Char) LIKE ${paramVendedores} AND
    CAST(fact_Ventas.origen As Char) LIKE ${paramOrigen} AND
    dim_Productos.marca LIKE ${paramMarca} AND
    dim_Clientes.segmentoCliente LIKE ${paramSegmento} 
GROUP BY 1
ORDER BY 1 

我想通过从简单参数中提取的数值来划分列数量。我设法在where子句中使用过滤器,但我不能在列中进行除法。

尝试以下查询:

SELECT
    CONCAT(cuatrimestre,' Cuatrimestre') As cuatrimestre
,   ROUND( (SUM(fact_Ventas.cantidad * precioUnitario)/${paramValue}),0) as Importe
FROM fact_Ventas 
INNER JOIN dim_Tiempos ON 
fact_Ventas.idAnio = dim_Tiempos.idAnio AND 
fact_Ventas.idMes = dim_Tiempos.idMes AND 
fact_Ventas.idDia = dim_Tiempos.idDia
INNER JOIN dim_Clientes ON dim_Clientes.idCliente = fact_Ventas.idCliente
INNER JOIN dim_Productos ON dim_Productos.idProducto = fact_Ventas.idProducto
WHERE 
    CAST(fact_Ventas.idAnio As Char) LIKE ${paramAnio} AND
    CAST(fact_Ventas.idMes As Char) LIKE ${paramMes} AND
    CAST(fact_Ventas.idVendedor As Char) LIKE ${paramVendedores} AND
    CAST(fact_Ventas.origen As Char) LIKE ${paramOrigen} AND
    dim_Productos.marca LIKE ${paramMarca} AND
    dim_Clientes.segmentoCliente LIKE ${paramSegmento} 
GROUP BY 1
ORDER BY 1 

但它会出错并且数据未加载。查询的语法在数据库中进行了测试,并且是正确的。

2 个答案:

答案 0 :(得分:0)

您是否将参数类型设置为Numeric?它默认为String,这可能适用于其他参数。

答案 1 :(得分:0)

问题是我忘了将参数分配给组件,我已经将它与SQL Query相关联,但没有与组件相关联。