Приведенные примеры, которые охватывают @QuerySqlFunction тривиальны. Я положил один ниже. Тем не менее, я ищу пример/решение/подсказку для обеспечения вычисления перекрестных строк, например. средний, сумма, ... Возможно ли это?Как реализовать SUM с помощью функции @QuerySqlFunction?
В этом примере функция возвращает значение 0 из массива, в основном реализацию ARRAY_GET (x, 0). Все остальные примеры, которые я видел, похожи: 1 строка, получить значение, что-то сделать с ним. Но мне нужно уметь вычислять сумму сгруппированного результата или, возможно, намного больше бизнес-логики. Если бы кто-то мог предоставить мне функцию QuerySqlFunction для СУММ, я предполагаю, что это позволит мне делать гораздо больше, чем просто СУММ.
Шаг 1: Написать функцию
public class MyIgniteFunctions {
@QuerySqlFunction
public static double value1(double[] values) {
return values[0];
}
}
Шаг 2: Регистрация функция
CacheConfiguration<Long, MyFact> factResultCacheCfg = ...
factResultCacheCfg.setSqlFunctionClasses(new Class[] { MyIgniteFunctions.class });
Шаг 3: Используйте его в запросе
SELECT
MyDimension.groupBy1,
MyDimension.groupBy2,
SUM(VALUE1(MyFact.values))
FROM
"dimensionCacheName".DimDimension,
"factCacheName".FactResult
WHERE
MyDimension.uid=MyFact.dimensionUid
GROUP BY
MyDimension.groupBy1,
MyDimension.groupBy2
Ignite поддерживает стандартную функцию SUM. Вам будет достаточно для вас? Или вы хотите реализовать некоторую настраиваемую функцию агрегации? –
Этот вопрос представляется дубликатом другого вопроса и был дан ответ здесь: http://stackoverflow.com/questions/33097103/how-to-sum-an-array-of-doubles-with-ignite-data-grid- sql – Dmitriy
Я знаю и понимаю, что есть стандартная функция SUM SUM. Мне не нужен СУММ. Мне нужна пример реализации QuerySqlFunction, которая обеспечивает функциональность в нескольких строках. Хорошим примером будет реализация SUM в качестве функции QuerySqlFunction. Это позволило бы мне понять, как написать QuerySqlFunction для нескольких строк, учитывая конкретный контекст, например. «группа». –