带数字参数的 Pentaho CDE SQL 查询

Posted

技术标签:

【中文标题】带数字参数的 Pentaho CDE SQL 查询【英文标题】:Pentaho CDE SQL Query with numerical param 【发布时间】:2018-07-17 16:15:47 【问题描述】:

我想知道是否可以执行 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 

但是它给出了一个错误并且没有加载数据。该查询的语法在数据库中经过测试,是正确的。

【问题讨论】:

【参考方案1】:

您是否将参数类型设置为数字?它默认为 String ,这对于您的其他参数可能没问题。

【讨论】:

【参考方案2】:

问题是我忘记将参数分配给组件,我已将其与 SQL Query 关联但未与组件关联。

【讨论】:

以上是关于带数字参数的 Pentaho CDE SQL 查询的主要内容,如果未能解决你的问题,请参考以下文章

pentaho cde在sql查询中包含/排除where子句

SQL case 语句不适用于多参数 pentaho cde

Pentaho CDE - 如何从 SQL 查询 JDBC 构建图表

Pentaho CDE 图表

在 pentaho CDE 中通过kettleTransFromFile 将参数传递给 pentaho 水壶

Pentaho CDE 如何从选择的组件中显示参数值