Fix data aggregation
This commit is contained in:
parent
3c78d614c2
commit
bb4a51bae1
@ -33,7 +33,7 @@ public interface TsKvTimescaleRepository extends CrudRepository<TimescaleTsKvEnt
|
|||||||
|
|
||||||
@Query("SELECT tskv FROM TimescaleTsKvEntity tskv WHERE tskv.entityId = :entityId " +
|
@Query("SELECT tskv FROM TimescaleTsKvEntity tskv WHERE tskv.entityId = :entityId " +
|
||||||
"AND tskv.key = :entityKey " +
|
"AND tskv.key = :entityKey " +
|
||||||
"AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
List<TimescaleTsKvEntity> findAllWithLimit(
|
List<TimescaleTsKvEntity> findAllWithLimit(
|
||||||
@Param("entityId") UUID entityId,
|
@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int key,
|
@Param("entityKey") int key,
|
||||||
@ -44,7 +44,7 @@ public interface TsKvTimescaleRepository extends CrudRepository<TimescaleTsKvEnt
|
|||||||
@Modifying
|
@Modifying
|
||||||
@Query("DELETE FROM TimescaleTsKvEntity tskv WHERE tskv.entityId = :entityId " +
|
@Query("DELETE FROM TimescaleTsKvEntity tskv WHERE tskv.entityId = :entityId " +
|
||||||
"AND tskv.key = :entityKey " +
|
"AND tskv.key = :entityKey " +
|
||||||
"AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
void delete(@Param("entityId") UUID entityId,
|
void delete(@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int key,
|
@Param("entityKey") int key,
|
||||||
@Param("startTs") long startTs,
|
@Param("startTs") long startTs,
|
||||||
|
|||||||
@ -32,7 +32,7 @@ import java.util.concurrent.CompletableFuture;
|
|||||||
public interface TsKvRepository extends CrudRepository<TsKvEntity, TsKvCompositeKey> {
|
public interface TsKvRepository extends CrudRepository<TsKvEntity, TsKvCompositeKey> {
|
||||||
|
|
||||||
@Query("SELECT tskv FROM TsKvEntity tskv WHERE tskv.entityId = :entityId " +
|
@Query("SELECT tskv FROM TsKvEntity tskv WHERE tskv.entityId = :entityId " +
|
||||||
"AND tskv.key = :entityKey AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"AND tskv.key = :entityKey AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
List<TsKvEntity> findAllWithLimit(@Param("entityId") UUID entityId,
|
List<TsKvEntity> findAllWithLimit(@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int key,
|
@Param("entityKey") int key,
|
||||||
@Param("startTs") long startTs,
|
@Param("startTs") long startTs,
|
||||||
@ -42,7 +42,7 @@ public interface TsKvRepository extends CrudRepository<TsKvEntity, TsKvComposite
|
|||||||
@Transactional
|
@Transactional
|
||||||
@Modifying
|
@Modifying
|
||||||
@Query("DELETE FROM TsKvEntity tskv WHERE tskv.entityId = :entityId " +
|
@Query("DELETE FROM TsKvEntity tskv WHERE tskv.entityId = :entityId " +
|
||||||
"AND tskv.key = :entityKey AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"AND tskv.key = :entityKey AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
void delete(@Param("entityId") UUID entityId,
|
void delete(@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int key,
|
@Param("entityKey") int key,
|
||||||
@Param("startTs") long startTs,
|
@Param("startTs") long startTs,
|
||||||
@ -51,7 +51,7 @@ public interface TsKvRepository extends CrudRepository<TsKvEntity, TsKvComposite
|
|||||||
@Async
|
@Async
|
||||||
@Query("SELECT new TsKvEntity(MAX(tskv.strValue)) FROM TsKvEntity tskv " +
|
@Query("SELECT new TsKvEntity(MAX(tskv.strValue)) FROM TsKvEntity tskv " +
|
||||||
"WHERE tskv.strValue IS NOT NULL " +
|
"WHERE tskv.strValue IS NOT NULL " +
|
||||||
"AND tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"AND tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
CompletableFuture<TsKvEntity> findStringMax(@Param("entityId") UUID entityId,
|
CompletableFuture<TsKvEntity> findStringMax(@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int entityKey,
|
@Param("entityKey") int entityKey,
|
||||||
@Param("startTs") long startTs,
|
@Param("startTs") long startTs,
|
||||||
@ -63,7 +63,7 @@ public interface TsKvRepository extends CrudRepository<TsKvEntity, TsKvComposite
|
|||||||
"SUM(CASE WHEN tskv.longValue IS NULL THEN 0 ELSE 1 END), " +
|
"SUM(CASE WHEN tskv.longValue IS NULL THEN 0 ELSE 1 END), " +
|
||||||
"SUM(CASE WHEN tskv.doubleValue IS NULL THEN 0 ELSE 1 END), " +
|
"SUM(CASE WHEN tskv.doubleValue IS NULL THEN 0 ELSE 1 END), " +
|
||||||
"'MAX') FROM TsKvEntity tskv " +
|
"'MAX') FROM TsKvEntity tskv " +
|
||||||
"WHERE tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"WHERE tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
CompletableFuture<TsKvEntity> findNumericMax(@Param("entityId") UUID entityId,
|
CompletableFuture<TsKvEntity> findNumericMax(@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int entityKey,
|
@Param("entityKey") int entityKey,
|
||||||
@Param("startTs") long startTs,
|
@Param("startTs") long startTs,
|
||||||
@ -73,7 +73,7 @@ public interface TsKvRepository extends CrudRepository<TsKvEntity, TsKvComposite
|
|||||||
@Async
|
@Async
|
||||||
@Query("SELECT new TsKvEntity(MIN(tskv.strValue)) FROM TsKvEntity tskv " +
|
@Query("SELECT new TsKvEntity(MIN(tskv.strValue)) FROM TsKvEntity tskv " +
|
||||||
"WHERE tskv.strValue IS NOT NULL " +
|
"WHERE tskv.strValue IS NOT NULL " +
|
||||||
"AND tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"AND tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
CompletableFuture<TsKvEntity> findStringMin(@Param("entityId") UUID entityId,
|
CompletableFuture<TsKvEntity> findStringMin(@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int entityKey,
|
@Param("entityKey") int entityKey,
|
||||||
@Param("startTs") long startTs,
|
@Param("startTs") long startTs,
|
||||||
@ -85,7 +85,7 @@ public interface TsKvRepository extends CrudRepository<TsKvEntity, TsKvComposite
|
|||||||
"SUM(CASE WHEN tskv.longValue IS NULL THEN 0 ELSE 1 END), " +
|
"SUM(CASE WHEN tskv.longValue IS NULL THEN 0 ELSE 1 END), " +
|
||||||
"SUM(CASE WHEN tskv.doubleValue IS NULL THEN 0 ELSE 1 END), " +
|
"SUM(CASE WHEN tskv.doubleValue IS NULL THEN 0 ELSE 1 END), " +
|
||||||
"'MIN') FROM TsKvEntity tskv " +
|
"'MIN') FROM TsKvEntity tskv " +
|
||||||
"WHERE tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"WHERE tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
CompletableFuture<TsKvEntity> findNumericMin(
|
CompletableFuture<TsKvEntity> findNumericMin(
|
||||||
@Param("entityId") UUID entityId,
|
@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int entityKey,
|
@Param("entityKey") int entityKey,
|
||||||
@ -98,7 +98,7 @@ public interface TsKvRepository extends CrudRepository<TsKvEntity, TsKvComposite
|
|||||||
"SUM(CASE WHEN tskv.longValue IS NULL THEN 0 ELSE 1 END), " +
|
"SUM(CASE WHEN tskv.longValue IS NULL THEN 0 ELSE 1 END), " +
|
||||||
"SUM(CASE WHEN tskv.doubleValue IS NULL THEN 0 ELSE 1 END), " +
|
"SUM(CASE WHEN tskv.doubleValue IS NULL THEN 0 ELSE 1 END), " +
|
||||||
"SUM(CASE WHEN tskv.jsonValue IS NULL THEN 0 ELSE 1 END)) FROM TsKvEntity tskv " +
|
"SUM(CASE WHEN tskv.jsonValue IS NULL THEN 0 ELSE 1 END)) FROM TsKvEntity tskv " +
|
||||||
"WHERE tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"WHERE tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
CompletableFuture<TsKvEntity> findCount(@Param("entityId") UUID entityId,
|
CompletableFuture<TsKvEntity> findCount(@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int entityKey,
|
@Param("entityKey") int entityKey,
|
||||||
@Param("startTs") long startTs,
|
@Param("startTs") long startTs,
|
||||||
@ -110,7 +110,7 @@ public interface TsKvRepository extends CrudRepository<TsKvEntity, TsKvComposite
|
|||||||
"SUM(CASE WHEN tskv.longValue IS NULL THEN 0 ELSE 1 END), " +
|
"SUM(CASE WHEN tskv.longValue IS NULL THEN 0 ELSE 1 END), " +
|
||||||
"SUM(CASE WHEN tskv.doubleValue IS NULL THEN 0 ELSE 1 END), " +
|
"SUM(CASE WHEN tskv.doubleValue IS NULL THEN 0 ELSE 1 END), " +
|
||||||
"'AVG') FROM TsKvEntity tskv " +
|
"'AVG') FROM TsKvEntity tskv " +
|
||||||
"WHERE tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"WHERE tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
CompletableFuture<TsKvEntity> findAvg(@Param("entityId") UUID entityId,
|
CompletableFuture<TsKvEntity> findAvg(@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int entityKey,
|
@Param("entityKey") int entityKey,
|
||||||
@Param("startTs") long startTs,
|
@Param("startTs") long startTs,
|
||||||
@ -122,7 +122,7 @@ public interface TsKvRepository extends CrudRepository<TsKvEntity, TsKvComposite
|
|||||||
"SUM(CASE WHEN tskv.longValue IS NULL THEN 0 ELSE 1 END), " +
|
"SUM(CASE WHEN tskv.longValue IS NULL THEN 0 ELSE 1 END), " +
|
||||||
"SUM(CASE WHEN tskv.doubleValue IS NULL THEN 0 ELSE 1 END), " +
|
"SUM(CASE WHEN tskv.doubleValue IS NULL THEN 0 ELSE 1 END), " +
|
||||||
"'SUM') FROM TsKvEntity tskv " +
|
"'SUM') FROM TsKvEntity tskv " +
|
||||||
"WHERE tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts > :startTs AND tskv.ts <= :endTs")
|
"WHERE tskv.entityId = :entityId AND tskv.key = :entityKey AND tskv.ts >= :startTs AND tskv.ts < :endTs")
|
||||||
CompletableFuture<TsKvEntity> findSum(@Param("entityId") UUID entityId,
|
CompletableFuture<TsKvEntity> findSum(@Param("entityId") UUID entityId,
|
||||||
@Param("entityKey") int entityKey,
|
@Param("entityKey") int entityKey,
|
||||||
@Param("startTs") long startTs,
|
@Param("startTs") long startTs,
|
||||||
|
|||||||
@ -550,8 +550,8 @@ public class CassandraBaseTimeseriesDao extends AbstractCassandraBaseTimeseriesD
|
|||||||
+ "AND " + ModelConstants.ENTITY_ID_COLUMN + EQUALS_PARAM
|
+ "AND " + ModelConstants.ENTITY_ID_COLUMN + EQUALS_PARAM
|
||||||
+ "AND " + ModelConstants.KEY_COLUMN + EQUALS_PARAM
|
+ "AND " + ModelConstants.KEY_COLUMN + EQUALS_PARAM
|
||||||
+ "AND " + ModelConstants.PARTITION_COLUMN + EQUALS_PARAM
|
+ "AND " + ModelConstants.PARTITION_COLUMN + EQUALS_PARAM
|
||||||
+ "AND " + ModelConstants.TS_COLUMN + " > ? "
|
+ "AND " + ModelConstants.TS_COLUMN + " >= ? "
|
||||||
+ "AND " + ModelConstants.TS_COLUMN + " <= ?");
|
+ "AND " + ModelConstants.TS_COLUMN + " < ?");
|
||||||
}
|
}
|
||||||
return deleteStmt;
|
return deleteStmt;
|
||||||
}
|
}
|
||||||
@ -740,8 +740,8 @@ public class CassandraBaseTimeseriesDao extends AbstractCassandraBaseTimeseriesD
|
|||||||
+ "AND " + ModelConstants.ENTITY_ID_COLUMN + EQUALS_PARAM
|
+ "AND " + ModelConstants.ENTITY_ID_COLUMN + EQUALS_PARAM
|
||||||
+ "AND " + ModelConstants.KEY_COLUMN + EQUALS_PARAM
|
+ "AND " + ModelConstants.KEY_COLUMN + EQUALS_PARAM
|
||||||
+ "AND " + ModelConstants.PARTITION_COLUMN + EQUALS_PARAM
|
+ "AND " + ModelConstants.PARTITION_COLUMN + EQUALS_PARAM
|
||||||
+ "AND " + ModelConstants.TS_COLUMN + " > ? "
|
+ "AND " + ModelConstants.TS_COLUMN + " >= ? "
|
||||||
+ "AND " + ModelConstants.TS_COLUMN + " <= ?"
|
+ "AND " + ModelConstants.TS_COLUMN + " < ?"
|
||||||
+ (type == Aggregation.NONE ? " ORDER BY " + ModelConstants.TS_COLUMN + " " + orderBy + " LIMIT ?" : ""));
|
+ (type == Aggregation.NONE ? " ORDER BY " + ModelConstants.TS_COLUMN + " " + orderBy + " LIMIT ?" : ""));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@ -300,14 +300,14 @@ export class DataAggregator {
|
|||||||
const aggKeyData = this.aggregationMap.aggMap[key];
|
const aggKeyData = this.aggregationMap.aggMap[key];
|
||||||
let keyData = this.dataBuffer[key];
|
let keyData = this.dataBuffer[key];
|
||||||
aggKeyData.forEach((aggData, aggTimestamp) => {
|
aggKeyData.forEach((aggData, aggTimestamp) => {
|
||||||
if (aggTimestamp <= this.startTs) {
|
if (aggTimestamp < this.startTs) {
|
||||||
if (this.subsTw.aggregation.stateData &&
|
if (this.subsTw.aggregation.stateData &&
|
||||||
(!this.lastPrevKvPairData[key] || this.lastPrevKvPairData[key][0] < aggTimestamp)) {
|
(!this.lastPrevKvPairData[key] || this.lastPrevKvPairData[key][0] < aggTimestamp)) {
|
||||||
this.lastPrevKvPairData[key] = [aggTimestamp, aggData.aggValue];
|
this.lastPrevKvPairData[key] = [aggTimestamp, aggData.aggValue];
|
||||||
}
|
}
|
||||||
aggKeyData.delete(aggTimestamp);
|
aggKeyData.delete(aggTimestamp);
|
||||||
this.updatedData = true;
|
this.updatedData = true;
|
||||||
} else if (aggTimestamp <= this.endTs) {
|
} else if (aggTimestamp < this.endTs) {
|
||||||
const kvPair: [number, any] = [aggTimestamp, aggData.aggValue];
|
const kvPair: [number, any] = [aggTimestamp, aggData.aggValue];
|
||||||
keyData.push(kvPair);
|
keyData.push(kvPair);
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user