mysql - AGGREGATE SQL 函数上的 QueryDatabaseTable 错误
问题描述
我想使用 QueryDatabaseRecord 处理器对数据库表中的几个字段执行平均。我的查询在 MySQL 中运行良好,如下所示:
select TimeOfDay,
AVG(BMU_Debug_Pack_Blk_Volt_Delta),
AVG(BMU_Debug_Pack_CTemp_Min)
from tt8;
我的所有字段都是“双”类型”,除了 TimeOfDay 是“varchar (10)”。当我在字段上运行像 AVG/Min 等聚合函数时,它给了我以下错误:
org.apache.nifi.processor.exception.ProcessException:
Error during database query or conversion of records to Avro
解决方案
Alias
自定义查询中的聚合列并尝试在 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;
推荐阅读
- c# - MainPage.OnStart() 找不到合适的方法来覆盖
- python - 从获取请求中解析结果
- python - 如何在熊猫中分组后过滤值
- c++ - 如何修复 C++ gcc 编译警告以填充结构
- filter - 筛选列中每一行的数据
- r - 使用 Lime 的 Keras 模型的特征/变量重要性
- css - 为什么此导航栏在 Internet Explorer 中不起作用
- c# - 我的应用程序因 SecurityException 而崩溃,说它需要文件 IO。如何找出正在访问的文件以便授予它权限?
- mysql - MySql中的while循环
- algorithm - 4 位年份和十年计数器