mysql - AGGREGATE SQL 函数上的 QueryDatabaseTable 错误

标签 mysql apache apache-nifi

我想使用查询数据库记录处理器对数据库表中的几个字段执行平均值。我的查询在 MySQL 中运行良好,如下所示:

select TimeOfDay,
    AVG(BMU_Debug_Pack_Blk_Volt_Delta), 
    AVG(BMU_Debug_Pack_CTemp_Min) 
from tt8;

我的所有字段都是“double”类型,除了 TimeOfDay 为“varchar (10)”。当我在字段上运行 AVG/Min 等聚合函数时,会出现以下错误:

org.apache.nifi.processor.exception.ProcessException: 
Error during database query or conversion of records to Avro

编写允许我执行聚合函数的 SQL 查询的正确方法是什么。谢谢你! enter image description here

最佳答案

为自定义查询中的聚合列别名,并尝试在 NiFi 中再次执行,因为处理器以 avro 格式输出数据,因此我们需要为聚合列添加别名以获取 avro 架构。

 select TimeOfDay,
        AVG(BMU_Debug_Pack_Blk_Volt_Delta) avg_BMU_Debug_Pack_Blk_Volt_Delta, 
        AVG(BMU_Debug_Pack_CTemp_Min) avg_BMU_Debug_Pack_CTemp_Min
 from tt8;

此外,正如您提到的,您可以在 mysql 端运行上述查询而无需添加group by 子句,因此, 如果不起作用,则将所有非聚合列添加到group by子句中并再次执行查询

select TimeOfDay,
            AVG(BMU_Debug_Pack_Blk_Volt_Delta) avg_BMU_Debug_Pack_Blk_Volt_Delta, 
            AVG(BMU_Debug_Pack_CTemp_Min) avg_BMU_Debug_Pack_CTemp_Min
        from tt8
group by TimeOfDay;

关于mysql - AGGREGATE SQL 函数上的 QueryDatabaseTable 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52882808/

相关文章:

mysql - SQL Group-By 最频繁

mysql - 为什么在 MySQL 触发器查询中出现语法错误?

merge - 尼菲 : Merging all of necessary flowfile in one shot with MergeContent Processor

bigdata - Apache Nifi 与 Gobblin

php - 更新行而不删除 mysql 中的先前值

java - Web应用程序servlet从mysql查询并显示用户信息

php - 使用 codeigniter 在 Apache 服务器上出现错误 404

mysql - 无法在本地开发站点 :-(

php - Apache 从 RAM 提供文件

ssl - 如何使用 InvokeHTTP 或 ExecuteStreamCommand 处理器在 Apache NiFi 中执行 curl 请求?