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

akshayrai09 pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/incubator-pinot.git


The following commit(s) were added to refs/heads/master by this push:
     new c3446ba  [TE] polish the rca template in email (#5939)
c3446ba is described below

commit c3446bac9c5c0882e0855a77674fc4eb211dbdf1
Author: Akshay Rai <ak...@linkedin.com>
AuthorDate: Fri Aug 28 16:15:18 2020 -0700

    [TE] polish the rca template in email (#5939)
    
    * polished the rca table with line separators and text wrapping
    * fixed the rca url in the template
    * removed deprecated fields from configuration
---
 .../anomaly/ThirdEyeAnomalyApplication.java        | 18 +++--
 .../anomaly/ThirdEyeAnomalyConfiguration.java      | 45 ------------
 .../thirdeye/common/ThirdEyeConfiguration.java     | 45 +++---------
 .../dashboard/ThirdEyeDashboardConfiguration.java  |  1 -
 .../dashboard/resources/v2/RootCauseResource.java  |  2 +-
 .../detector/metric-anomalies-template.ftl         | 72 +++++++++----------
 ...rca-highlights-cube-algo-response-rendered.html | 84 ++++++++++------------
 ...st-email-rca-highlights-cube-algo-response.json |  2 +-
 8 files changed, 94 insertions(+), 175 deletions(-)

diff --git 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/anomaly/ThirdEyeAnomalyApplication.java
 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/anomaly/ThirdEyeAnomalyApplication.java
index 0435848..e1a8ba5 100644
--- 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/anomaly/ThirdEyeAnomalyApplication.java
+++ 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/anomaly/ThirdEyeAnomalyApplication.java
@@ -97,7 +97,7 @@ public class ThirdEyeAnomalyApplication
   }
 
   @Override
-  public void run(final ThirdEyeAnomalyConfiguration config, final Environment 
environment)
+  public void run(final ThirdEyeAnomalyConfiguration config, final Environment 
env)
       throws Exception {
     LOG.info("Starting ThirdeyeAnomalyApplication : Scheduler {} Worker {}", 
config.isScheduler(), config.isWorker());
     super.initDAOs();
@@ -107,10 +107,14 @@ public class ThirdEyeAnomalyApplication
       LOG.error("Exception while loading caches", e);
     }
 
-    environment.getObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
-    environment.getObjectMapper().registerModule(makeMapperModule());
+    env.getObjectMapper().enable(SerializationFeature.INDENT_OUTPUT);
+    env.getObjectMapper().registerModule(makeMapperModule());
 
-    environment.lifecycle().manage(new Managed() {
+    env.lifecycle().manage(lifecycleManager(config, env));
+  }
+
+  private Managed lifecycleManager(ThirdEyeAnomalyConfiguration config, 
Environment env) {
+    return new Managed() {
       @Override
       public void start() throws Exception {
 
@@ -140,14 +144,14 @@ public class ThirdEyeAnomalyApplication
               new 
HolidayEventsLoader(config.getHolidayEventsLoaderConfiguration(), 
config.getCalendarApiKeyPath(),
                   DAORegistry.getInstance().getEventDAO());
           holidayEventsLoader.start();
-          environment.jersey().register(new 
HolidayEventResource(holidayEventsLoader));
+          env.jersey().register(new HolidayEventResource(holidayEventsLoader));
         }
         if (config.isMockEventsLoader()) {
           mockEventsLoader = new 
MockEventsLoader(config.getMockEventsLoaderConfiguration(), 
DAORegistry.getInstance().getEventDAO());
           mockEventsLoader.run();
         }
         if (config.isPinotProxy()) {
-          environment.jersey().register(new PinotDataSourceResource());
+          env.jersey().register(new PinotDataSourceResource());
         }
         if (config.isDetectionPipeline()) {
           detectionScheduler = new 
DetectionCronScheduler(DAORegistry.getInstance().getDetectionConfigManager());
@@ -206,7 +210,7 @@ public class ThirdEyeAnomalyApplication
           modelDownloaderManager.shutdown();
         }
       }
-    });
+    };
   }
 
   private void updateAdminSession(String adminUser, String sessionKey) {
diff --git 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/anomaly/ThirdEyeAnomalyConfiguration.java
 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/anomaly/ThirdEyeAnomalyConfiguration.java
index c46dea7..8a08bb0 100644
--- 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/anomaly/ThirdEyeAnomalyConfiguration.java
+++ 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/anomaly/ThirdEyeAnomalyConfiguration.java
@@ -32,8 +32,6 @@ public class ThirdEyeAnomalyConfiguration extends 
ThirdEyeConfiguration {
 
   private boolean alert = false;
   private boolean autoload = false;
-  private boolean classifier = false;
-  private boolean dataCompleteness = false;
   private boolean holidayEventsLoader = false;
   private boolean mockEventsLoader = false;
   private boolean monitor = false;
@@ -47,7 +45,6 @@ public class ThirdEyeAnomalyConfiguration extends 
ThirdEyeConfiguration {
   private boolean dataAvailabilityTaskScheduler = false;
 
   private long id;
-  private String dashboardHost;
   private HolidayEventsLoaderConfiguration holidayEventsLoaderConfiguration = 
new HolidayEventsLoaderConfiguration();
   private MockEventsLoaderConfiguration mockEventsLoaderConfiguration = new 
MockEventsLoaderConfiguration();
   private MonitorConfiguration monitorConfiguration = new 
MonitorConfiguration();
@@ -56,8 +53,6 @@ public class ThirdEyeAnomalyConfiguration extends 
ThirdEyeConfiguration {
   private ThirdEyeRestClientConfiguration teRestConfig = new 
ThirdEyeRestClientConfiguration();
   private DataAvailabilitySchedulingConfiguration
       dataAvailabilitySchedulingConfiguration = new 
DataAvailabilitySchedulingConfiguration();
-  private String failureFromAddress;
-  private String failureToAddress;
   private List<String> holidayCountriesWhitelist;
 
   public ThirdEyeRestClientConfiguration getThirdEyeRestClientConfiguration() {
@@ -116,14 +111,6 @@ public class ThirdEyeAnomalyConfiguration extends 
ThirdEyeConfiguration {
     this.holidayEventsLoader = holidayEventsLoader;
   }
 
-  public String getDashboardHost() {
-    return dashboardHost;
-  }
-
-  public void setDashboardHost(String dashboardHost) {
-    this.dashboardHost = dashboardHost;
-  }
-
   public long getId() {
     return id;
   }
@@ -220,22 +207,6 @@ public class ThirdEyeAnomalyConfiguration extends 
ThirdEyeConfiguration {
     this.autoload = autoload;
   }
 
-  public boolean isDataCompleteness() {
-    return dataCompleteness;
-  }
-
-  public void setDataCompleteness(boolean dataCompleteness) {
-    this.dataCompleteness = dataCompleteness;
-  }
-
-  public boolean isClassifier() {
-    return classifier;
-  }
-
-  public void setClassifier(boolean classifier) {
-    this.classifier = classifier;
-  }
-
   public boolean isPinotProxy() {
     return pinotProxy;
   }
@@ -244,22 +215,6 @@ public class ThirdEyeAnomalyConfiguration extends 
ThirdEyeConfiguration {
     this.pinotProxy = pinotProxy;
   }
 
-  public String getFailureFromAddress() {
-    return failureFromAddress;
-  }
-
-  public void setFailureFromAddress(String failureFromAddress) {
-    this.failureFromAddress = failureFromAddress;
-  }
-
-  public String getFailureToAddress() {
-    return failureToAddress;
-  }
-
-  public void setFailureToAddress(String failureToAddress) {
-    this.failureToAddress = failureToAddress;
-  }
-
   public List<String> getHolidayCountriesWhitelist() {
     return holidayCountriesWhitelist;
   }
diff --git 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/common/ThirdEyeConfiguration.java
 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/common/ThirdEyeConfiguration.java
index 83b0dd8..37eee2a 100644
--- 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/common/ThirdEyeConfiguration.java
+++ 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/common/ThirdEyeConfiguration.java
@@ -23,7 +23,6 @@ import com.fasterxml.jackson.annotation.JsonProperty;
 import io.federecio.dropwizard.swagger.SwaggerBundleConfiguration;
 import java.net.MalformedURLException;
 import java.net.URL;
-import java.util.ArrayList;
 import java.util.List;
 
 import io.dropwizard.Configuration;
@@ -39,8 +38,6 @@ public class ThirdEyeConfiguration extends Configuration {
   private String dataSources = "data-sources/data-sources-config.yml";
   private String cacheDataSource = "data-sources/cache-config.yml";
 
-  private List<String> whitelistDatasets = new ArrayList<>();
-
   private String dashboardHost;
 
   @JsonProperty("swagger")
@@ -74,11 +71,6 @@ public class ThirdEyeConfiguration extends Configuration {
     return getSourceAsUrl(this.dataSources);
   }
 
-  // same as above but for cache config
-  public URL getCacheConfigAsUrl() {
-    return getSourceAsUrl(this.cacheDataSource);
-  }
-
   private URL getSourceAsUrl(String path) {
     try {
       return new URL(path);
@@ -98,6 +90,16 @@ public class ThirdEyeConfiguration extends Configuration {
     return dataSources;
   }
 
+  public void setDataSources(String dataSources) {
+    this.dataSources = dataSources;
+  }
+
+  public URL getCacheConfigAsUrl() {
+    return getSourceAsUrl(this.cacheDataSource);
+  }
+
+  public void setCacheDataSource(String cacheDataSource) { 
this.cacheDataSource = cacheDataSource; }
+
   public String getRootDir() {
     return rootDir;
   }
@@ -114,14 +116,6 @@ public class ThirdEyeConfiguration extends Configuration {
     this.cors = cors;
   }
 
-  public List<String> getWhitelistDatasets() {
-    return whitelistDatasets;
-  }
-
-  public void setWhitelistDatasets(List<String> whitelistDatasets) {
-    this.whitelistDatasets = whitelistDatasets;
-  }
-
   public String getFunctionConfigPath() {
     return getRootDir() + 
"/detector-config/anomaly-functions/functions.properties";
   }
@@ -131,19 +125,6 @@ public class ThirdEyeConfiguration extends Configuration {
     return getRootDir() + 
"/detector-config/anomaly-functions/alertFilter.properties";
   }
 
-  //alertFilterAutotune.properties format: {auto tune type} = {path to auto 
tune implementation}
-  public String getFilterAutotuneConfigPath() {
-    return getRootDir() + 
"/detector-config/anomaly-functions/alertFilterAutotune.properties";
-  }
-
-  public String getAlertGroupRecipientProviderConfigPath() {
-    return getRootDir() + 
"/detector-config/anomaly-functions/alertGroupRecipientProvider.properties";
-  }
-
-  public String getAnomalyClassifierConfigPath() {
-    return getRootDir() + 
"/detector-config/anomaly-functions/anomalyClassifier.properties";
-  }
-
   public String getCalendarApiKeyPath(){
     return getRootDir() + "/holiday-loader-key.json";
   }
@@ -180,12 +161,6 @@ public class ThirdEyeConfiguration extends Configuration {
     this.failureToAddress = failureToAddress;
   }
 
-  public void setDataSources(String dataSources) {
-    this.dataSources = dataSources;
-  }
-
-  public void setCacheDataSource(String cacheDataSource) { 
this.cacheDataSource = cacheDataSource; }
-
   public Map<String, Map<String, Object>> getAlerterConfiguration() {
     return alerterConfigurations;
   }
diff --git 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/ThirdEyeDashboardConfiguration.java
 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/ThirdEyeDashboardConfiguration.java
index 51a142a..0563171 100644
--- 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/ThirdEyeDashboardConfiguration.java
+++ 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/ThirdEyeDashboardConfiguration.java
@@ -20,7 +20,6 @@
 package org.apache.pinot.thirdeye.dashboard;
 
 import org.apache.pinot.thirdeye.common.ThirdEyeConfiguration;
-import org.apache.pinot.thirdeye.dashboard.RootCauseConfiguration;
 import org.apache.pinot.thirdeye.dashboard.configs.AuthConfiguration;
 import org.apache.pinot.thirdeye.dashboard.configs.ResourceConfiguration;
 import java.util.List;
diff --git 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/v2/RootCauseResource.java
 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/v2/RootCauseResource.java
index 8dc2c53..53e2cb9 100644
--- 
a/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/v2/RootCauseResource.java
+++ 
b/thirdeye/thirdeye-pinot/src/main/java/org/apache/pinot/thirdeye/dashboard/resources/v2/RootCauseResource.java
@@ -66,7 +66,7 @@ public class RootCauseResource {
   private static final long ANALYSIS_RANGE_MAX = TimeUnit.DAYS.toMillis(32);
   private static final long ANOMALY_RANGE_MAX = TimeUnit.DAYS.toMillis(32);
   private static final long BASELINE_RANGE_MAX = ANOMALY_RANGE_MAX;
-  private static final int DEFAULT_HIGHLIGHT_CUBE_SUMMARY_SIZE = 3;
+  private static final int DEFAULT_HIGHLIGHT_CUBE_SUMMARY_SIZE = 4;
   private static final int DEFAULT_HIGHLIGHT_CUBE_DEPTH = 3;
 
   private final List<RootCauseEntityFormatter> formatters;
diff --git 
a/thirdeye/thirdeye-pinot/src/main/resources/org/apache/pinot/thirdeye/detector/metric-anomalies-template.ftl
 
b/thirdeye/thirdeye-pinot/src/main/resources/org/apache/pinot/thirdeye/detector/metric-anomalies-template.ftl
index defd0f3..9d469cf 100644
--- 
a/thirdeye/thirdeye-pinot/src/main/resources/org/apache/pinot/thirdeye/detector/metric-anomalies-template.ftl
+++ 
b/thirdeye/thirdeye-pinot/src/main/resources/org/apache/pinot/thirdeye/detector/metric-anomalies-template.ftl
@@ -148,47 +148,43 @@
 
         <!-- RCA -->
         <#if cubeDimensions?has_content && cubeResponseRows?has_content>
-            <@utils.addBlock title="Root Cause Analysis" align="left">
-            <a href="${dashboardHost}/app/#/rootcause?anomalyId=${anomalyIds} 
style="text-decoration: none; color:#0073B1; font-size:12px; 
font-weight:bold;">(more)</a>
+          <@utils.addBlock title="Root Cause Analysis" align="left">
+            <a href="${dashboardHost}/app/#/rootcause?anomalyId=${anomalyIds}" 
style="text-decoration: none; color:#0073B1; font-size:12px; 
font-weight:bold;">Top Anomalous Dimensions</a>
             <table border="0" align="center" style="table-layout: fixed; 
width:100%; padding:0; margin:0; border-collapse: collapse; text-align:left;">
-              <tr style="border-bottom: 1px solid #C7D1D8; padding: 16px;">
-                <div>
-                  <table>
-                    <thead>
-                      <tr>
-                        <th>Top Anomalous Dimensions</th>
-                      </tr>
-                      <tr>
-                      <#list cubeDimensions as dimension>
-                        <th style="text-align:left; padding: 6px 12px; 
font-size: 12px; font-weight: bold; line-height: 20px;">${dimension}</th>
-                      </#list>
-                      <th style="text-align:left; padding: 6px 12px; 
font-size: 12px; font-weight: bold; line-height: 20px;">Baseline</th>
-                      <th style="text-align:left; padding: 6px 12px; 
font-size: 12px; font-weight: bold; line-height: 20px;">Current</th>
-                      <th style="text-align:left; padding: 6px 12px; 
font-size: 12px; font-weight: bold; line-height: 20px;">% Change</th>
-                      </tr>
-                    </thead>
-
-                    <tbody>
-                    <#list cubeResponseRows as dimSliceEntry>
-                      <#if dimSliceEntry["names"]?has_content>
-                        <tr>
-                          <#list dimSliceEntry["names"] as dimensionName>
-                            <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px;">${dimensionName}</td>
-                          </#list>
-                          <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">${dimSliceEntry["baselineValue"]}</td>
-                          <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">${dimSliceEntry["currentValue"]}</td>
-                          <#assign positive=true>
-                          <#if 
dimSliceEntry["percentageChange"]?matches(r'-[0-9]\d*(\.\d+)?%')>
-                              <#assign positive=false>
-                          </#if>
-                          <td 
style="color:${positive?string('#3A8C18','#ee1620')}; font-size:12px; 
line-height:20px; text-align:center;">${dimSliceEntry["percentageChange"]}</td>
-                        </tr>
+              <thead>
+                <tr style="text-align:center; background-color: #F6F8FA; 
border-top: 2px solid #C7D1D8; border-bottom: 2px solid #C7D1D8;">
+                  <#list cubeDimensions as dimension>
+                    <th style="text-align:left; padding: 6px 12px; font-size: 
12px; font-weight: bold; line-height: 20px;">${dimension}</th>
+                  </#list>
+                  <th style="padding: 6px 12px; font-size: 12px; font-weight: 
bold; line-height: 20px;">Baseline</th>
+                  <th style="padding: 6px 12px; font-size: 12px; font-weight: 
bold; line-height: 20px;">Current</th>
+                  <th style="padding: 6px 12px; font-size: 12px; font-weight: 
bold; line-height: 20px;">% Change</th>
+                </tr>
+              </thead>
+              <tbody>
+                <#list cubeResponseRows as dimSliceEntry>
+                  <tr style="border-bottom: 1px solid #C7D1D8;">
+                    <#list cubeDimensions as dimension>
+                      <#if dimSliceEntry["names"]?has_content && 
dimSliceEntry["names"][dimension?counter - 1]?has_content>
+                        <#if dimSliceEntry["names"][dimension?counter - 1] == 
"(ALL)-">
+                          <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:left;">Other</td>
+                        <#else>
+                          <td style="word-break: break-all; color: 
rgba(0,0,0,0.9); font-size:12px; line-height:20px; 
text-align:left;">${dimSliceEntry["names"][dimension?counter - 1]}</td>
+                        </#if>
+                      <#else>
+                        <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:left;">-</td>
                       </#if>
                     </#list>
-                    </tbody>
-                  </table>
-                </div>
-              </tr>
+                    <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">${dimSliceEntry["baselineValue"]}</td>
+                    <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">${dimSliceEntry["currentValue"]}</td>
+                    <#assign positive=true>
+                    <#if 
dimSliceEntry["percentageChange"]?matches(r'-[0-9]\d*(\.\d+)?%')>
+                      <#assign positive=false>
+                    </#if>
+                    <td style="color:${positive?string('#3A8C18','#ee1620')}; 
font-size:12px; line-height:20px; 
text-align:center;">${dimSliceEntry["percentageChange"]}</td>
+                  </tr>
+                </#list>
+              </tbody>
             </table>
           </@utils.addBlock>
         </#if>
diff --git 
a/thirdeye/thirdeye-pinot/src/test/resources/test-email-rca-highlights-cube-algo-response-rendered.html
 
b/thirdeye/thirdeye-pinot/src/test/resources/test-email-rca-highlights-cube-algo-response-rendered.html
index b78b0fd..2f50d5e 100644
--- 
a/thirdeye/thirdeye-pinot/src/test/resources/test-email-rca-highlights-cube-algo-response-rendered.html
+++ 
b/thirdeye/thirdeye-pinot/src/test/resources/test-email-rca-highlights-cube-algo-response-rendered.html
@@ -42,54 +42,44 @@
       <td style="border-bottom: 1px solid rgba(0,0,0,0.15); padding: 12px 
24px; align:left">
           <p style="font-size:20px; line-height:24px; color:#1D1D1D; 
font-weight: 500; margin:0; padding:0;">Root Cause Analysis</p>
 
-            <a 
href="http://localhost:8080/dashboard/app/#/rootcause?anomalyId= 
style="text-decoration: none; color:#0073B1; font-size:12px; 
font-weight:bold;">(more)</a>
+            <a 
href="http://localhost:8080/dashboard/app/#/rootcause?anomalyId="; 
style="text-decoration: none; color:#0073B1; font-size:12px; 
font-weight:bold;">Top Anomalous Dimensions</a>
             <table border="0" align="center" style="table-layout: fixed; 
width:100%; padding:0; margin:0; border-collapse: collapse; text-align:left;">
-              <tr style="border-bottom: 1px solid #C7D1D8; padding: 16px;">
-                <div>
-                  <table>
-                    <thead>
-                      <tr>
-                        <th>Top Anomalous Dimensions</th>
-                      </tr>
-                      <tr>
-                        <th style="text-align:left; padding: 6px 12px; 
font-size: 12px; font-weight: bold; line-height: 20px;">country_code</th>
-                        <th style="text-align:left; padding: 6px 12px; 
font-size: 12px; font-weight: bold; line-height: 20px;">industry</th>
-                        <th style="text-align:left; padding: 6px 12px; 
font-size: 12px; font-weight: bold; line-height: 20px;">device</th>
-                      <th style="text-align:left; padding: 6px 12px; 
font-size: 12px; font-weight: bold; line-height: 20px;">Baseline</th>
-                      <th style="text-align:left; padding: 6px 12px; 
font-size: 12px; font-weight: bold; line-height: 20px;">Current</th>
-                      <th style="text-align:left; padding: 6px 12px; 
font-size: 12px; font-weight: bold; line-height: 20px;">% Change</th>
-                      </tr>
-                    </thead>
-
-                    <tbody>
-                        <tr>
-                            <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px;">(ALL)-</td>
-                            <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px;"></td>
-                            <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px;"></td>
-                          <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">189,072</td>
-                          <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">188,105</td>
-                          <td style="color:#ee1620; font-size:12px; 
line-height:20px; text-align:center;">-0.5114%</td>
-                        </tr>
-                        <tr>
-                            <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px;">india</td>
-                            <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px;">information technology and services</td>
-                            <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px;">Android</td>
-                          <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">3,907</td>
-                          <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">15,598</td>
-                          <td style="color:#3A8C18; font-size:12px; 
line-height:20px; text-align:center;">299.2321%</td>
-                        </tr>
-                        <tr>
-                            <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px;">australia</td>
-                            <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px;">computer and network security</td>
-                            <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px;">Android</td>
-                          <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">1</td>
-                          <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">752</td>
-                          <td style="color:#3A8C18; font-size:12px; 
line-height:20px; text-align:center;">75100.0000%</td>
-                        </tr>
-                    </tbody>
-                  </table>
-                </div>
-              </tr>
+              <thead>
+                <tr style="text-align:center; background-color: #F6F8FA; 
border-top: 2px solid #C7D1D8; border-bottom: 2px solid #C7D1D8;">
+                    <th style="text-align:left; padding: 6px 12px; font-size: 
12px; font-weight: bold; line-height: 20px;">country_code</th>
+                    <th style="text-align:left; padding: 6px 12px; font-size: 
12px; font-weight: bold; line-height: 20px;">industry</th>
+                    <th style="text-align:left; padding: 6px 12px; font-size: 
12px; font-weight: bold; line-height: 20px;">device</th>
+                  <th style="padding: 6px 12px; font-size: 12px; font-weight: 
bold; line-height: 20px;">Baseline</th>
+                  <th style="padding: 6px 12px; font-size: 12px; font-weight: 
bold; line-height: 20px;">Current</th>
+                  <th style="padding: 6px 12px; font-size: 12px; font-weight: 
bold; line-height: 20px;">% Change</th>
+                </tr>
+              </thead>
+              <tbody>
+                  <tr style="border-bottom: 1px solid #C7D1D8;">
+                          <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:left;">Other</td>
+                        <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:left;">-</td>
+                        <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:left;">-</td>
+                    <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">189,072</td>
+                    <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">188,105</td>
+                    <td style="color:#ee1620; font-size:12px; 
line-height:20px; text-align:center;">-0.5114%</td>
+                  </tr>
+                  <tr style="border-bottom: 1px solid #C7D1D8;">
+                          <td style="word-break: break-all; color: 
rgba(0,0,0,0.9); font-size:12px; line-height:20px; text-align:left;">india</td>
+                          <td style="word-break: break-all; color: 
rgba(0,0,0,0.9); font-size:12px; line-height:20px; 
text-align:left;">information technology and services</td>
+                          <td style="word-break: break-all; color: 
rgba(0,0,0,0.9); font-size:12px; line-height:20px; 
text-align:left;">Android</td>
+                    <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">3,907</td>
+                    <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">15,598</td>
+                    <td style="color:#3A8C18; font-size:12px; 
line-height:20px; text-align:center;">299.2321%</td>
+                  </tr>
+                  <tr style="border-bottom: 1px solid #C7D1D8;">
+                          <td style="word-break: break-all; color: 
rgba(0,0,0,0.9); font-size:12px; line-height:20px; 
text-align:left;">australia</td>
+                          <td style="word-break: break-all; color: 
rgba(0,0,0,0.9); font-size:12px; line-height:20px; text-align:left;">computer 
and network security</td>
+                          <td style="word-break: break-all; color: 
rgba(0,0,0,0.9); font-size:12px; line-height:20px; 
text-align:left;">Android</td>
+                    <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">1</td>
+                    <td style="color: rgba(0,0,0,0.9); font-size:12px; 
line-height:20px; text-align:center;">752</td>
+                    <td style="color:#3A8C18; font-size:12px; 
line-height:20px; text-align:center;">75100.0000%</td>
+                  </tr>
+              </tbody>
             </table>
 
       </td>
diff --git 
a/thirdeye/thirdeye-pinot/src/test/resources/test-email-rca-highlights-cube-algo-response.json
 
b/thirdeye/thirdeye-pinot/src/test/resources/test-email-rca-highlights-cube-algo-response.json
index e940ed0..b882488 100644
--- 
a/thirdeye/thirdeye-pinot/src/test/resources/test-email-rca-highlights-cube-algo-response.json
+++ 
b/thirdeye/thirdeye-pinot/src/test/resources/test-email-rca-highlights-cube-algo-response.json
@@ -16,7 +16,7 @@
         "percentageChange":"-0.5114%",
         "contributionChange":"-5.9718%",
         "contributionToOverallChange":"-8.4270%",
-        "names":["(ALL)-","",""],
+        "names":["(ALL)-"],
         "otherDimensionValues":"united states, united kingdom, canada, 
germany, united arab emirates, france, israel, bangladesh, netherlands, brazil, 
and more...",
         "cost":0.0
       },{


---------------------------------------------------------------------
To unsubscribe, e-mail: commits-unsubscr...@pinot.apache.org
For additional commands, e-mail: commits-h...@pinot.apache.org

Reply via email to