我想使用查询数据库记录处理器对数据库表中的几个字段执行平均值。我的查询在 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
最佳答案
为自定义查询中的聚合列别名
,并尝试在 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/