0
如何用點燃數據grid/sql來求和雙精度數組?如何用點燃數據網格/ sql來總結一個雙精度數組?
鑑於:1維度表我的維度和1個事實表MyFact。加入他們,按幾個維度進行分組**,並總結與之相關的事實。現在考慮事實表進行求和,不包含單個double值,而是包含雙精度數組。並且檢索的總和是一個表示所有數組總和的數組。
作爲一個例子的話:假設 「所有的陣列是」:
array 1: double[] { 1.0, 2.0, 3.0, 4.0, 5.0 }
array 2: double[] { 2.0, 3.0, 4.0, 5.0, 6.0 }
array 3: double[] { 3.0, 4.0, 5.0, 6.0, 7.0 }
那麼 「代表所有陣列的總和陣列」 將是: 雙[] {6.0,9.0,12.0, 15.0,18.0}
我查看了@QuerySqlFunction,但找不到任何可以幫助我的例子。
這不一定是SQL。任何從我的緩存中獲得數組總和的方法都會很棒。
感謝,
約翰
MyFact
package com.hsbc.rsl.babarpoc.ignite.starschema;
import org.apache.ignite.cache.query.annotations.QuerySqlField;
public class MyFact {
/** Primary key. */
@QuerySqlField(index = true)
private long uid;
@QuerySqlField(index = true)
private long dimensionUid;
@QuerySqlField
private double values[];
public MyFact(long uid, long dimensionUid, double values[]) {
this.uid = uid;
this.dimensionUid = dimensionUid;
this.values = values;
}
public long getUid() {
return uid;
}
public void setUid(long uid) {
this.uid = uid;
}
public long getDimensionUid() {
return dimensionUid;
}
public void setDimensionUid(long dimensionUid) {
this.dimensionUid = dimensionUid;
}
public double[] getValues() {
return values;
}
public void setValues(double[] values) {
this.values = values;
}
}
MyDimension
import org.apache.ignite.cache.query.annotations.QuerySqlField;
public class MyDimension {
@QuerySqlField(index = true)
private long uid;
@QuerySqlField
private String groupBy1;
@QuerySqlField
private String groupBy2;
public MyDimension(String groupBy1, String groupBy2) {
this.groupBy1 = groupBy1;
this.groupBy2 = groupBy2;
}
public long getUid() {
return uid;
}
public void setUid(long uid) {
this.uid = uid;
}
public String getGroupBy1() {
return groupBy1;
}
public void setGroupBy1(String groupBy1) {
this.groupBy1 = groupBy1;
}
public String getGroupBy2() {
return groupBy2;
}
public void setGroupBy2(String groupBy2) {
this.groupBy2 = groupBy2;
}
}
查詢(一個這是行不通的)
我在下面添加一個示例sql,它將給出1值的總和,即它不會爲數組工作:它會產生一個錯誤。
SELECT
MyDimension.groupBy1,
MyDimension.groupBy2,
SUM(MyFact.values)
FROM
"dimensionCacheName".DimDimension,
"factCacheName".FactResult
WHERE
MyDimension.uid=MyFact.dimensionUid
GROUP BY
MyDimension.groupBy1,
MyDimension.groupBy2
謝謝瓦倫丁。我已經添加了一個示例來解釋這意味着什麼:「要檢索的總和,是表示所有數組總和的數組。」我不需要1個值是1個數組值的總和......這是微不足道的。 –
對不起,我錯過了。但是這實際上並沒有改變任何東西 - 兩種解決方案都可以工作,但你根本不需要使用SQL'sum()'函數。所以,如果你使用自定義函數,查詢應該看起來像這樣:'SELECT arraySum(values)FROM ...' –