You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@streampipes.apache.org by ri...@apache.org on 2023/04/05 20:18:34 UTC

[streampipes] branch fix-bugs-in-data-explorer created (now d0fc6ae63)

This is an automated email from the ASF dual-hosted git repository.

riemer pushed a change to branch fix-bugs-in-data-explorer
in repository https://gitbox.apache.org/repos/asf/streampipes.git


      at d0fc6ae63 [hotfix] Improve handling of count queries, improve table widget

This branch includes the following new commits:

     new d0fc6ae63 [hotfix] Improve handling of count queries, improve table widget

The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.



[streampipes] 01/01: [hotfix] Improve handling of count queries, improve table widget

Posted by ri...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

riemer pushed a commit to branch fix-bugs-in-data-explorer
in repository https://gitbox.apache.org/repos/asf/streampipes.git

commit d0fc6ae63ea3a73cd949323c74af6ccffe787803
Author: Dominik Riemer <do...@gmail.com>
AuthorDate: Wed Apr 5 22:18:10 2023 +0200

    [hotfix] Improve handling of count queries, improve table widget
---
 .../influx/DataExplorerInfluxQueryExecutor.java            | 13 ++++++++++++-
 .../param/ProvidedRestQueryParamConverter.java             |  4 ++--
 .../streampipes/dataexplorer/param/SelectQueryParams.java  | 14 +++++++++++---
 .../{ItemClauseParams.java => LimitClauseParams.java}      |  8 ++++----
 .../dataexplorer/query/DataExplorerQueryExecutor.java      |  3 ++-
 .../components/widgets/table/table-widget.component.html   |  1 +
 6 files changed, 32 insertions(+), 11 deletions(-)

diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerInfluxQueryExecutor.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerInfluxQueryExecutor.java
index d0bbdc09f..f6531b08f 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerInfluxQueryExecutor.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/influx/DataExplorerInfluxQueryExecutor.java
@@ -32,6 +32,7 @@ import org.influxdb.dto.QueryResult;
 
 import java.util.ArrayList;
 import java.util.List;
+import java.util.Objects;
 
 public class DataExplorerInfluxQueryExecutor extends DataExplorerQueryExecutor<Query, QueryResult> {
 
@@ -52,12 +53,22 @@ public class DataExplorerInfluxQueryExecutor extends DataExplorerQueryExecutor<Q
   protected double getAmountOfResults(QueryResult countQueryResult) {
     if (countQueryResult.getResults().get(0).getSeries() != null
         && countQueryResult.getResults().get(0).getSeries().get(0).getValues() != null) {
-      return (double) countQueryResult.getResults().get(0).getSeries().get(0).getValues().get(0).get(1);
+      return getMaxCount(countQueryResult.getResults().get(0).getSeries().get(0).getValues().get(0));
     } else {
       return 0.0;
     }
   }
 
+  private double getMaxCount(List<Object> rows) {
+    return rows.stream()
+        .skip(1)
+        .filter(Objects::nonNull)
+        .filter(Number.class::isInstance)
+        .mapToDouble(r -> ((Number) r).doubleValue())
+        .max()
+        .orElse(Double.NEGATIVE_INFINITY);
+  }
+
 
   protected DataSeries convertResult(QueryResult.Series series,
                                      boolean ignoreMissingValues) {
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/ProvidedRestQueryParamConverter.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/ProvidedRestQueryParamConverter.java
index 963ec9d32..b95c2e8fb 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/ProvidedRestQueryParamConverter.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/ProvidedRestQueryParamConverter.java
@@ -21,7 +21,7 @@ package org.apache.streampipes.dataexplorer.param;
 import org.apache.streampipes.dataexplorer.param.model.FillClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.GroupByTagsClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.GroupByTimeClauseParams;
-import org.apache.streampipes.dataexplorer.param.model.ItemClauseParams;
+import org.apache.streampipes.dataexplorer.param.model.LimitClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.OffsetClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.OrderByClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.SelectClauseParams;
@@ -99,7 +99,7 @@ public class ProvidedRestQueryParamConverter {
     }
 
     if (params.has(QP_LIMIT)) {
-      queryParameters.withLimitParams(ItemClauseParams.from(params.getAsInt(QP_LIMIT)));
+      queryParameters.withLimitParams(LimitClauseParams.from(params.getAsInt(QP_LIMIT)));
     }
 
     if (params.has(QP_OFFSET)) {
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/SelectQueryParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/SelectQueryParams.java
index 741365060..558a56e4e 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/SelectQueryParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/SelectQueryParams.java
@@ -20,7 +20,7 @@ package org.apache.streampipes.dataexplorer.param;
 import org.apache.streampipes.dataexplorer.param.model.FillClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.GroupByTagsClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.GroupByTimeClauseParams;
-import org.apache.streampipes.dataexplorer.param.model.ItemClauseParams;
+import org.apache.streampipes.dataexplorer.param.model.LimitClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.OffsetClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.OrderByClauseParams;
 import org.apache.streampipes.dataexplorer.param.model.SelectClauseParams;
@@ -39,7 +39,7 @@ public class SelectQueryParams {
   private GroupByTimeClauseParams groupByTimeClauseParams;
 
   private OrderByClauseParams orderByClauseParams;
-  private ItemClauseParams limitParams;
+  private LimitClauseParams limitParams;
 
   private OffsetClauseParams offsetClauseParams;
 
@@ -59,7 +59,7 @@ public class SelectQueryParams {
     this.selectParams = params;
   }
 
-  public void withLimitParams(ItemClauseParams params) {
+  public void withLimitParams(LimitClauseParams params) {
     this.limitParams = params;
   }
 
@@ -99,6 +99,14 @@ public class SelectQueryParams {
     return builder.build();
   }
 
+  public int getLimit() {
+    if (Objects.nonNull(limitParams)) {
+      return limitParams.getLimit();
+    } else {
+      return Integer.MIN_VALUE;
+    }
+  }
+
   private <T> void prepareBuilder(IDataLakeQueryBuilder<T> builder) {
     if (Objects.nonNull(this.whereParams)) {
       this.whereParams.buildStatement(builder);
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/ItemClauseParams.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/LimitClauseParams.java
similarity index 86%
rename from streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/ItemClauseParams.java
rename to streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/LimitClauseParams.java
index ea447176c..bdff3d070 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/ItemClauseParams.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/param/model/LimitClauseParams.java
@@ -21,16 +21,16 @@ package org.apache.streampipes.dataexplorer.param.model;
 import org.apache.streampipes.dataexplorer.api.IQueryStatement;
 import org.apache.streampipes.dataexplorer.querybuilder.IDataLakeQueryBuilder;
 
-public class ItemClauseParams implements IQueryStatement {
+public class LimitClauseParams implements IQueryStatement {
 
   private final Integer limit;
 
-  public ItemClauseParams(Integer limit) {
+  public LimitClauseParams(Integer limit) {
     this.limit = limit;
   }
 
-  public static ItemClauseParams from(Integer limit) {
-    return new ItemClauseParams(limit);
+  public static LimitClauseParams from(Integer limit) {
+    return new LimitClauseParams(limit);
   }
 
   public Integer getLimit() {
diff --git a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DataExplorerQueryExecutor.java b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DataExplorerQueryExecutor.java
index 769fc042a..29d7de50f 100644
--- a/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DataExplorerQueryExecutor.java
+++ b/streampipes-data-explorer/src/main/java/org/apache/streampipes/dataexplorer/query/DataExplorerQueryExecutor.java
@@ -56,7 +56,8 @@ public abstract class DataExplorerQueryExecutor<X, W> {
     if (this.maximumAmountOfEvents != -1) {
       X countQuery = makeCountQuery(params);
       W countQueryResult = executeQuery(countQuery);
-      Double amountOfQueryResults = getAmountOfResults(countQueryResult);
+      var limit = params.getLimit();
+      Double amountOfQueryResults = limit == Integer.MIN_VALUE ? getAmountOfResults(countQueryResult) : limit;
 
       if (amountOfQueryResults > this.maximumAmountOfEvents) {
         SpQueryResult tooMuchData = new SpQueryResult();
diff --git a/ui/src/app/data-explorer/components/widgets/table/table-widget.component.html b/ui/src/app/data-explorer/components/widgets/table/table-widget.component.html
index b1cedb470..1b44a9132 100644
--- a/ui/src/app/data-explorer/components/widgets/table/table-widget.component.html
+++ b/ui/src/app/data-explorer/components/widgets/table/table-widget.component.html
@@ -120,6 +120,7 @@
             <tr mat-row *matRowDef="let row; columns: columnNames"></tr>
         </table>
         <mat-paginator
+            *ngIf="showData"
             [length]="100"
             [pageSize]="500"
             [pageSizeOptions]="[10, 20, 50, 100, 500, 1000]"