迄今爲止看到的例子覆蓋了@QuerySqlFunction是微不足道的。我在下面放一個。然而,我正在尋找提供交叉行計算的示例/解決方案/提示,例如,平均,總和,...這可能嗎?如何使用@QuerySqlFunction實現SUM?
在該示例中,函數從數組中返回值0,基本上是ARRAY_GET(x,0)的實現。我見過的所有其他例子都是類似的:1行,獲得價值,用它做點什麼。但我需要能夠計算分組結果的總和,或者可能有更多的業務邏輯。如果有人可以爲我提供SUM的QuerySqlFunction,我認爲可以讓我做的不僅僅是SUM。
第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支持標準的sql SUM功能。這對你來說足夠了嗎?或者你想實現一些自定義聚合函數? –
這個問題似乎是另一個問題的副本,並在這裏回答:http://stackoverflow.com/questions/33097103/how-to-sum-an-array-of-doubles-with-ignite-data-grid- sql – Dmitriy
我知道並理解有可用的標準sql SUM函數。我不需要一個SUM。我需要的是QuerySqlFunction的一個示例實現,它提供跨多行的功能。將SUM作爲QuerySqlFunction的實現將是一個很好的例子。這使我能夠理解如何在給定特定上下文的情況下跨多行編寫QuerySqlFunction,例如,一個「由......組成」。 –