Skip to content

Commit 443e5a1

Browse files
committed
Refactor skewness calculation in central moment accumulators
1 parent 2523ceb commit 443e5a1

File tree

3 files changed

+10
-17
lines changed

3 files changed

+10
-17
lines changed

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/aggregation/CentralMomentAccumulator.java

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -177,13 +177,10 @@ public void outputFinal(ColumnBuilder columnBuilder) {
177177
if (momentType == MomentType.SKEWNESS) {
178178
if (count < 3) {
179179
columnBuilder.appendNull();
180-
} else {
181-
182-
double variance = m2 / (count - 1);
183-
double stdev = Math.sqrt(variance);
184-
double result = (count * m3) / ((count - 1) * (count - 2) * stdev * stdev * stdev);
185-
columnBuilder.writeDouble(result);
180+
return;
186181
}
182+
double result = Math.sqrt((double) count) * m3 / Math.pow(m2, 1.5);
183+
columnBuilder.writeDouble(result);
187184
} else {
188185
if (count < 4) {
189186
columnBuilder.appendNull();

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/TableCentralMomentAccumulator.java

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -192,12 +192,10 @@ public void evaluateFinal(ColumnBuilder columnBuilder) {
192192
if (momentType == CentralMomentAccumulator.MomentType.SKEWNESS) {
193193
if (count < 3) {
194194
columnBuilder.appendNull();
195-
} else {
196-
double variance = m2 / (count - 1);
197-
double stdev = Math.sqrt(variance);
198-
double result = (count * m3) / ((count - 1) * (count - 2) * stdev * stdev * stdev);
199-
columnBuilder.writeDouble(result);
195+
return;
200196
}
197+
double result = Math.sqrt((double) count) * m3 / Math.pow(m2, 1.5);
198+
columnBuilder.writeDouble(result);
201199
} else {
202200
if (count < 4) {
203201
columnBuilder.appendNull();

iotdb-core/datanode/src/main/java/org/apache/iotdb/db/queryengine/execution/operator/source/relational/aggregation/grouped/GroupedCentralMomentAccumulator.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -242,13 +242,11 @@ public void evaluateFinal(int groupId, ColumnBuilder columnBuilder) {
242242
if (momentType == CentralMomentAccumulator.MomentType.SKEWNESS) {
243243
if (count < 3) {
244244
columnBuilder.appendNull();
245-
} else {
246-
double m3 = m3s.get(groupId);
247-
double variance = m2 / (count - 1);
248-
double stdev = Math.sqrt(variance);
249-
double result = (count * m3) / ((count - 1) * (count - 2) * stdev * stdev * stdev);
250-
columnBuilder.writeDouble(result);
245+
return;
251246
}
247+
double m3 = m3s.get(groupId);
248+
double result = Math.sqrt((double) count) * m3 / Math.pow(m2, 1.5);
249+
columnBuilder.writeDouble(result);
252250
} else {
253251
if (count < 4) {
254252
columnBuilder.appendNull();

0 commit comments

Comments
 (0)