You are viewing a plain text version of this content. The canonical link for it is here.
Posted to notifications@skywalking.apache.org by wu...@apache.org on 2023/11/22 01:44:44 UTC

(skywalking) branch master updated: Replace Metrics v2 protocol with MQE in UI templates and E2E Test (#11575)

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

wusheng pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/skywalking.git


The following commit(s) were added to refs/heads/master by this push:
     new df6504863f Replace Metrics v2 protocol with MQE in UI templates and E2E Test (#11575)
df6504863f is described below

commit df6504863f574262c399204ea2233d979f1faa6e
Author: mrproliu <74...@qq.com>
AuthorDate: Wed Nov 22 09:44:37 2023 +0800

    Replace Metrics v2 protocol with MQE in UI templates and E2E Test (#11575)
---
 docs/en/changes/changes.md                         |    1 +
 .../browser/browser-app.json                       |    2 +-
 .../general/general-instance.json                  |   27 +-
 .../mesh/mesh-instance.json                        |  170 +-
 .../mesh/mesh-proces-relation.json                 |  659 ++---
 .../mesh/mesh-service-relation.json                |   49 +-
 .../mesh/mesh-service.json                         |  109 +-
 .../mesh_cp/mesh-control-plane-root.json           |   56 +-
 .../mesh_dp/mesh-data-plane-process-relation.json  | 2857 +++++++++-----------
 .../so11y_oap/so11y-instance.json                  |  241 +-
 .../so11y_oap/so11y-service.json                   |   41 +-
 .../so11y_satellite/so11y-root.json                |  358 ++-
 test/e2e-v2/cases/aws/dynamodb/dynamodb-cases.yaml |   44 +-
 .../aws/dynamodb/expected/metrics-has-value.yml    |   26 +-
 test/e2e-v2/cases/cluster/cluster-cases.yaml       |   12 +-
 .../cases/cluster/expected/metrics-day-first.yml   |   21 +-
 .../cases/cluster/expected/metrics-day-second.yml  |   21 +-
 .../cases/cluster/expected/metrics-hour-first.yml  |   41 +-
 .../cases/cluster/expected/metrics-hour-second.yml |   41 +-
 .../cluster/expected/metrics-minute-first.yml      |   27 +-
 .../cluster/expected/metrics-minute-second.yml     |   27 +-
 .../cases/elasticsearch/elasticsearch-cases.yaml   |  190 +-
 .../expected/metrics-has-value-label.yml           |   30 +-
 .../elasticsearch/expected/metrics-has-value.yml   |   22 +-
 test/e2e-v2/cases/gateway/e2e.yaml                 |   36 +-
 .../expected/metrics-has-value-percentile.yml      |   82 +-
 .../cases/gateway/expected/metrics-has-value.yml   |   26 +-
 test/e2e-v2/cases/go/e2e.yaml                      |   32 +-
 .../e2e-v2/cases/go/expected/metrics-has-value.yml |   26 +-
 .../kafka/meter/expected/metrics-has-value.yml     |   26 +-
 test/e2e-v2/cases/kafka/meter/meter-cases.yaml     |    6 +-
 .../cases/log/expected/metrics-has-value.yml       |   26 +-
 test/e2e-v2/cases/log/log-cases.yaml               |    2 +-
 test/e2e-v2/cases/lua/e2e.yaml                     |   32 +-
 .../cases/lua/expected/metrics-has-value.yml       |   26 +-
 .../cases/mariadb/expected/metrics-has-value.yml   |   26 +-
 test/e2e-v2/cases/mariadb/mariadb-cases.yaml       |   52 +-
 .../mariadb/mariadb-slowsql/docker-compose.yaml    |   10 +-
 .../cases/meter/expected/metrics-has-value.yml     |   26 +-
 test/e2e-v2/cases/meter/meter-cases.yaml           |   10 +-
 .../mongodb/expected/metrics-has-value-label.yml   |   30 +-
 .../cases/mongodb/expected/metrics-has-value.yml   |   22 +-
 test/e2e-v2/cases/mongodb/mongodb-cases.yaml       |   94 +-
 .../cases/mysql/expected/metrics-has-value.yml     |   41 +-
 test/e2e-v2/cases/mysql/mysql-cases.yaml           |   52 +-
 test/e2e-v2/cases/nodejs/e2e.yaml                  |   32 +-
 .../cases/nodejs/expected/metrics-has-value.yml    |   26 +-
 test/e2e-v2/cases/php/e2e.yaml                     |   32 +-
 .../cases/php/expected/metrics-has-value.yml       |   26 +-
 .../expected/metrics-has-value-label.yml           |   34 +-
 .../postgresql/expected/metrics-has-value.yml      |   26 +-
 test/e2e-v2/cases/postgresql/postgresql-cases.yaml |   46 +-
 .../ebpf/continuous/expected/metrics-has-value.yml |   26 +-
 .../profiling/ebpf/continuous/profiling-cases.yaml |    4 +-
 test/e2e-v2/cases/python/e2e.yaml                  |   44 +-
 .../cases/python/expected/metrics-has-value.yml    |   26 +-
 .../redis/expected/metrics-has-value-label.yml     |   34 +-
 .../cases/redis/expected/metrics-has-value.yml     |   26 +-
 test/e2e-v2/cases/redis/redis-cases.yaml           |   34 +-
 .../cases/satellite/native-protocols/e2e.yaml      |    8 +-
 .../expected/metrics-has-value.yml                 |   26 +-
 .../expected/metrics-has-value-percentile.yml      |   82 +-
 .../cases/simple/expected/metrics-has-value.yml    |   26 +-
 test/e2e-v2/cases/simple/simple-cases.yaml         |   74 +-
 .../so11y/expected/metrics-has-value-label.yml     |   32 +-
 .../cases/so11y/expected/metrics-has-value.yml     |   26 +-
 test/e2e-v2/cases/so11y/satellite-cases.yaml       |    4 +-
 test/e2e-v2/cases/so11y/so11y-cases.yaml           |   20 +-
 .../expected/metrics-has-value-percentile.yml      |   82 +-
 .../cases/storage/expected/metrics-has-value.yml   |   26 +-
 test/e2e-v2/cases/storage/storage-cases.yaml       |   74 +-
 .../cases/ttl/expected/metrics-has-value.yml       |   26 +-
 test/e2e-v2/cases/ttl/ttl-cases.yaml               |    2 +-
 73 files changed, 3202 insertions(+), 3477 deletions(-)

diff --git a/docs/en/changes/changes.md b/docs/en/changes/changes.md
index 304fa932c3..b1b387adfe 100644
--- a/docs/en/changes/changes.md
+++ b/docs/en/changes/changes.md
@@ -45,6 +45,7 @@
 * Support Nginx monitoring.
 * Fix `BanyanDB Metadata Query`: make query single instance/process return full tags to avoid NPE.
 * Repleace go2sky E2E to GO agent.
+* Replace Metrics v2 protocol with MQE in UI templates and E2E Test.
 
 #### UI
 
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-app.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-app.json
index 0b384071d2..4d3a53455b 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-app.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/browser/browser-app.json
@@ -264,7 +264,7 @@
                   "h": 14,
                   "i": "14",
                   "type": "Widget",
-                  "metrics": [
+                  "expressions": [
                     "top_n(browser_app_single_version_error_sum,10,des)"
                   ],
                   "metricMode": "Expression",
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json
index ed8b3e26e9..07d3e79efb 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/general/general-instance.json
@@ -852,12 +852,6 @@
                   "h": 12,
                   "i": "2",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "meter_process_cpu_usage"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -868,7 +862,14 @@
                   },
                   "widget": {
                     "title": "Instance CPU Usage (%)"
-                  }
+                  },
+                  "metricMode":"Expression",
+                  "expressions":[
+                    "meter_process_cpu_usage"
+                  ],
+                  "typesOfMQE":[
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
                   "x": 0,
@@ -1258,18 +1259,12 @@
                     }
                   ],
                   "expressions": [
-                    "meter_instance_golang_live_goroutines_num"
+                    "meter_instance_golang_live_goroutines_num",
+                    "meter_instance_golang_os_threads_num"
                   ],
                   "typesOfMQE": [
+                    "TIME_SERIES_VALUES",
                     "TIME_SERIES_VALUES"
-                  ],
-                  "metrics": [
-                    "meter_instance_golang_os_threads_num",
-                    "meter_instance_golang_live_goroutines_num"
-                  ],
-                  "metricTypes": [
-                    "readMetricsValues",
-                    "readMetricsValues"
                   ]
                 },
                 {
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-instance.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-instance.json
index cef7b54708..478694b2d5 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-instance.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-instance.json
@@ -192,11 +192,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_cluster_up_rq_active"
                   ],
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -217,14 +218,6 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
-                    "envoy_total_connections_used",
-                    "envoy_parent_connections_used"
-                  ],
-                  "metricTypes": [
-                    "readMetricsValues",
-                    "readMetricsValues"
-                  ],
                   "metricConfig": [
                     {
                       "label": "total"
@@ -232,6 +225,15 @@
                     {
                       "label": "parent"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "envoy_total_connections_used",
+                    "envoy_parent_connections_used"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -252,11 +254,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_cluster_membership_healthy"
                   ],
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -277,11 +280,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_cluster_up_cx_incr"
                   ],
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -302,11 +306,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_cluster_up_rq_pending_active"
                   ],
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -327,47 +332,48 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
-                    "envoy_memory_allocated_max",
-                    "envoy_heap_memory_used",
-                    "envoy_memory_allocated",
-                    "envoy_memory_physical_size",
-                    "envoy_memory_physical_size_max",
-                    "envoy_heap_memory_max_used"
-                  ],
-                  "metricTypes": [
-                    "readMetricsValues",
-                    "readMetricsValues",
-                    "readMetricsValues",
-                    "readMetricsValues",
-                    "readMetricsValues",
-                    "readMetricsValues"
-                  ],
                   "metricConfig": [
                     {
-                      "calculation": "byteToMB",
-                      "label": "allocated_max"
+                      "label": "allocated_max",
+                      "unit": "MB"
                     },
                     {
-                      "calculation": "byteToMB",
-                      "label": "heap_memory_used"
+                      "label": "heap_memory_used",
+                      "unit": "MB"
                     },
                     {
-                      "calculation": "byteToMB",
-                      "label": "allocated"
+                      "label": "allocated",
+                      "unit": "MB"
                     },
                     {
-                      "calculation": "byteToMB",
-                      "label": "physical_size"
+                      "label": "physical_size",
+                      "unit": "MB"
                     },
                     {
-                      "calculation": "byteToMB",
-                      "label": "physical_size_max"
+                      "label": "physical_size_max",
+                      "unit": "MB"
                     },
                     {
-                      "calculation": "byteToMB",
-                      "label": "max_used"
+                      "label": "max_used",
+                      "unit": "MB"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "envoy_memory_allocated_max/1024/1024",
+                    "envoy_heap_memory_used/1024/1024",
+                    "envoy_memory_allocated/1024/1024",
+                    "envoy_memory_physical_size/1024/1024",
+                    "envoy_memory_physical_size_max/1024/1024",
+                    "envoy_heap_memory_max_used/1024/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -388,11 +394,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_bug_failures"
                   ],
-                  "metricTypes": [
-                    "readMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -413,21 +420,14 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_worker_threads_max",
                     "envoy_worker_threads"
                   ],
-                  "metricTypes": [
-                    "readMetricsValues",
-                    "readMetricsValues"
-                  ],
-                  "metricConfig": [
-                    {
-                      "label": "threads_max"
-                    },
-                    {
-                      "label": "threads"
-                    }
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES",
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -448,11 +448,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_cluster_up_cx_active"
                   ],
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -473,11 +474,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_cluster_up_rq_incr"
                   ],
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -487,12 +489,6 @@
                   "h": 13,
                   "i": "20",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "service_instance_sidecar_internal_req_latency_nanos"
-                  ],
                   "widget": {
                     "title": "Proxy Sidecar Internal Latency in Nanoseconds (Request)",
                     "tips": "For more details to understand this metrics, refer to https://www.envoyproxy.io/docs/envoy/v1.22.0/api-v3/data/accesslog/v3/accesslog.proto.html#data-accesslog-v3-accesslogcommon"
@@ -504,7 +500,14 @@
                     "showSymbol": true,
                     "showXAxis": true,
                     "showYAxis": true
-                  }
+                  },
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "service_instance_sidecar_internal_req_latency_nanos"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
                   "x": 18,
@@ -513,12 +516,6 @@
                   "h": 13,
                   "i": "21",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "service_instance_sidecar_internal_resp_latency_nanos"
-                  ],
                   "widget": {
                     "tips": "For more details to understand this metrics, refer to https://www.envoyproxy.io/docs/envoy/v1.22.0/api-v3/data/accesslog/v3/accesslog.proto.html#data-accesslog-v3-accesslogcommon",
                     "title": "Proxy Sidecar Internal Latency in Nanoseconds (Response)"
@@ -530,7 +527,14 @@
                     "showSymbol": true,
                     "showXAxis": true,
                     "showYAxis": true
-                  }
+                  },
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "service_instance_sidecar_internal_resp_latency_nanos"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 }
               ]
             },
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-proces-relation.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-proces-relation.json
index 26c5eae903..96597333db 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-proces-relation.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-proces-relation.json
@@ -22,12 +22,6 @@
                   "h": 11,
                   "i": "0",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_write_cpm"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -74,6 +68,13 @@
                     {
                       "widgetId": "29"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -83,12 +84,6 @@
                   "h": 11,
                   "i": "1",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_write_cpm"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -135,6 +130,13 @@
                     {
                       "widgetId": "29"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -144,12 +146,6 @@
                   "h": 11,
                   "i": "2",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_read_cpm"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -184,6 +180,13 @@
                     {
                       "widgetId": "25"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_read_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -193,12 +196,6 @@
                   "h": 11,
                   "i": "3",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_read_cpm"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -232,6 +229,13 @@
                     {
                       "widgetId": "25"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_read_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -241,12 +245,6 @@
                   "h": 11,
                   "i": "4",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_write_total_bytes"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -259,14 +257,15 @@
                     "title": "Write Package Size (Client) (KB)",
                     "name": "write_package_size_client"
                   },
-                  "metricConfig": [
-                    {
-                      "unit": "KB",
-                      "calculation": "byteToKB"
-                    }
-                  ],
                   "associate": [
 
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_total_bytes/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -276,12 +275,6 @@
                   "h": 11,
                   "i": "5",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_read_total_bytes"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -294,12 +287,6 @@
                     "title": "Read Package Size (Client) (KB)",
                     "name": "read_package_szie_client"
                   },
-                  "metricConfig": [
-                    {
-                      "unit": "KB",
-                      "calculation": "byteToKB"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "2"
@@ -322,6 +309,13 @@
                     {
                       "widgetId": "25"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_read_total_bytes/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -331,12 +325,6 @@
                   "h": 11,
                   "i": "6",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_write_total_bytes"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -345,12 +333,6 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metricConfig": [
-                    {
-                      "unit": "KB",
-                      "calculation": "byteToKB"
-                    }
-                  ],
                   "widget": {
                     "title": "Write Package Size (Server) (KB)",
                     "name": "write_package_size_server"
@@ -389,6 +371,13 @@
                     {
                       "widgetId": "29"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_total_bytes/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -398,12 +387,6 @@
                   "h": 11,
                   "i": "7",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_read_total_bytes"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -412,12 +395,6 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metricConfig": [
-                    {
-                      "unit": "KB",
-                      "calculation": "byteToKB"
-                    }
-                  ],
                   "widget": {
                     "title": "Read Package Size (Server) (KB)",
                     "name": "read_package_size_server"
@@ -444,6 +421,13 @@
                     {
                       "widgetId": "25"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_read_total_bytes/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -453,12 +437,6 @@
                   "h": 11,
                   "i": "8",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_write_avg_exe_time"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -471,12 +449,6 @@
                     "title": "Write OP Avg Time (Client) (ms)",
                     "name": "write_avg_time_client"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond",
-                      "unit": "ms"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "1"
@@ -511,6 +483,13 @@
                     {
                       "widgetId": "29"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -520,12 +499,6 @@
                   "h": 11,
                   "i": "9",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_read_avg_exe_time"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -538,12 +511,6 @@
                     "title": "Read OP Avg Time (Client) (ms)",
                     "name": "read_avg_time_client"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond",
-                      "unit": "ms"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "2"
@@ -566,6 +533,13 @@
                     {
                       "widgetId": "25"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_read_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -575,12 +549,6 @@
                   "h": 11,
                   "i": "10",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_write_avg_exe_time"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -593,14 +561,15 @@
                     "title": "Write OP Avg Time (Server) (ms)",
                     "name": "write_avg_time_server"
                   },
-                  "metricConfig": [
-                    {
-                      "unit": "ms",
-                      "calculation": "nanosecondToMillisecond"
-                    }
-                  ],
                   "associate": [
 
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -610,12 +579,6 @@
                   "h": 11,
                   "i": "11",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_read_avg_exe_time"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -628,12 +591,6 @@
                     "title": "Read OP Avg Time (Server) (ms)",
                     "name": "read_avg_time_server"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond",
-                      "unit": "ms"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "2"
@@ -656,6 +613,13 @@
                     {
                       "widgetId": "25"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_read_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -665,12 +629,6 @@
                   "h": 11,
                   "i": "12",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_connect_cpm"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -693,6 +651,13 @@
                     {
                       "widgetId": "15"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_connect_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -702,12 +667,6 @@
                   "h": 11,
                   "i": "13",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_connect_exe_time"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -720,12 +679,6 @@
                     "title": "Connect Avg Time (Client) (ms)",
                     "name": "connect_avg_time_client"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond",
-                      "unit": "ms"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "12"
@@ -736,6 +689,13 @@
                     {
                       "widgetId": "15"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_connect_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -745,12 +705,6 @@
                   "h": 11,
                   "i": "14",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_connect_cpm"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -773,6 +727,13 @@
                     {
                       "widgetId": "15"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_connect_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -782,12 +743,6 @@
                   "h": 11,
                   "i": "15",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_connect_avg_exe_time"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -800,12 +755,6 @@
                     "title": "Connect Avg Time (Server) (ms)",
                     "name": "connect_avg_time_server"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond",
-                      "unit": "ms"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "13"
@@ -816,6 +765,13 @@
                     {
                       "widgetId": "12"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_connect_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -825,12 +781,6 @@
                   "h": 11,
                   "i": "16",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_close_cpm"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -853,6 +803,13 @@
                     {
                       "widgetId": "19"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_close_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -862,12 +819,6 @@
                   "h": 11,
                   "i": "17",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_close_avg_exe_time"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -880,12 +831,6 @@
                     "title": "Close Avg Time (Client) (ms)",
                     "name": "close_avg_time_client"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond",
-                      "unit": "ms"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "16"
@@ -896,6 +841,13 @@
                     {
                       "widgetId": "19"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_close_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -905,12 +857,6 @@
                   "h": 11,
                   "i": "18",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_close_cpm"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -933,6 +879,13 @@
                     {
                       "widgetId": "19"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_close_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -942,12 +895,6 @@
                   "h": 11,
                   "i": "19",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_close_avg_exe_time"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -960,12 +907,6 @@
                     "title": "Close Avg Time (Server) (ms)",
                     "name": "close_avg_time_server"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond",
-                      "unit": "ms"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "17"
@@ -976,6 +917,13 @@
                     {
                       "widgetId": "16"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_close_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -985,12 +933,6 @@
                   "h": 11,
                   "i": "20",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_write_rtt_time_percentile"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1003,11 +945,6 @@
                     "title": "Write OP RTT Percentile (client) (microsecond)",
                     "name": "write_rtt_percentile_client"
                   },
-                  "metricConfig": [
-                    {
-                      "unit": "ns"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "1"
@@ -1042,6 +979,13 @@
                     {
                       "widgetId": "29"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_rtt_time_percentile"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1051,12 +995,6 @@
                   "h": 11,
                   "i": "21",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_write_rtt_time_percentile"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1103,6 +1041,13 @@
                     {
                       "widgetId": "29"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_rtt_time_percentile"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1112,12 +1057,6 @@
                   "h": 11,
                   "i": "22",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_write_exe_time_percentile"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1130,11 +1069,6 @@
                     "title": "Write OP Exe Time Percentile (client) (ms)",
                     "name": "write_exe_time_percentile_client"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "1"
@@ -1169,6 +1103,13 @@
                     {
                       "widgetId": "29"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_exe_time_percentile/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1178,12 +1119,6 @@
                   "h": 11,
                   "i": "23",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_write_exe_time_percentile"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1196,11 +1131,6 @@
                     "title": "Write OP Exe Time Percentile (server) (ms)",
                     "name": "write_exe_time_percentile_server"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "1"
@@ -1235,6 +1165,13 @@
                     {
                       "widgetId": "29"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_exe_time_percentile/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1244,12 +1181,6 @@
                   "h": 11,
                   "i": "24",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_read_exe_time_percentile"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1262,11 +1193,6 @@
                     "title": "Read OP Exe Time Percentile (client) (ms)",
                     "name": "read_exe_time_percentile_client"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "2"
@@ -1289,6 +1215,13 @@
                     {
                       "widgetId": "25"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_read_exe_time_percentile/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1298,12 +1231,6 @@
                   "h": 11,
                   "i": "25",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_read_exe_time_percentile"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1316,11 +1243,6 @@
                     "title": "Read OP Exe Time Percentile (server) (ms)",
                     "name": "read_exe_time_percentile_server"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "nanosecondToMillisecond"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "2"
@@ -1343,6 +1265,13 @@
                     {
                       "widgetId": "3"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_read_exe_time_percentile/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1352,12 +1281,6 @@
                   "h": 11,
                   "i": "28",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_client_write_avg_rtt_time"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1404,6 +1327,13 @@
                     {
                       "widgetId": "29"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_avg_rtt_time"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1413,12 +1343,6 @@
                   "h": 11,
                   "i": "29",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_server_write_avg_rtt_time"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1465,6 +1389,13 @@
                     {
                       "widgetId": "0"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_avg_rtt_time"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 }
               ]
@@ -1479,12 +1410,6 @@
                   "h": 11,
                   "i": "0",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_http1_request_cpm"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1525,6 +1450,13 @@
                     {
                       "widgetId": "30-1-9"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_request_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1534,12 +1466,6 @@
                   "h": 11,
                   "i": "1",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_http1_response_status_cpm"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1580,6 +1506,13 @@
                     {
                       "widgetId": "30-1-9"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_response_status_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1589,12 +1522,6 @@
                   "h": 11,
                   "i": "2",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_http1_request_package_size"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1607,11 +1534,6 @@
                     "title": "Request Package Avg Size (KB)",
                     "name": "http1-request-package-avg-size"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "byteToKB"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "30-1-1"
@@ -1640,6 +1562,13 @@
                     {
                       "widgetId": "30-1-9"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_request_package_size/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1649,12 +1578,6 @@
                   "h": 11,
                   "i": "3",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_http1_response_package_size"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1667,11 +1590,6 @@
                     "title": "Response Package Avg Size (KB)",
                     "name": "http1-response-package-avg-size"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "byteToKB"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "30-1-1"
@@ -1700,6 +1618,13 @@
                     {
                       "widgetId": "30-1-9"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_response_package_size/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1709,12 +1634,6 @@
                   "h": 11,
                   "i": "4",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_http1_request_package_size_percentile"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1727,11 +1646,6 @@
                     "title": "Request Package Size Percentile (KB)",
                     "name": "http1-request-package-size-percentile"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "byteToKB"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "30-1-1"
@@ -1760,6 +1674,13 @@
                     {
                       "widgetId": "30-1-9"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_request_package_size_percentile/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1769,12 +1690,6 @@
                   "h": 11,
                   "i": "5",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_http1_response_package_size_percentile"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1787,11 +1702,6 @@
                     "title": "Response Package Size Percentile (KB)",
                     "name": "http1-response-package-size-percentile"
                   },
-                  "metricConfig": [
-                    {
-                      "calculation": "byteToKB"
-                    }
-                  ],
                   "associate": [
                     {
                       "widgetId": "30-1-1"
@@ -1820,6 +1730,13 @@
                     {
                       "widgetId": "30-1-9"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_response_package_size_percentile/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1829,12 +1746,6 @@
                   "h": 11,
                   "i": "6",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_http1_client_duration"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1875,6 +1786,13 @@
                     {
                       "widgetId": "30-1-9"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_client_duration"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1884,12 +1802,6 @@
                   "h": 11,
                   "i": "7",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_http1_client_duration_percentile"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1930,6 +1842,13 @@
                     {
                       "widgetId": "30-1-9"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_client_duration_percentile"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1939,12 +1858,6 @@
                   "h": 11,
                   "i": "8",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_http1_server_duration"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -1985,6 +1898,13 @@
                     {
                       "widgetId": "30-1-9"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_server_duration"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -1994,12 +1914,6 @@
                   "h": 11,
                   "i": "9",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics": [
-                    "process_relation_http1_server_duration_percentile"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -2040,6 +1954,13 @@
                     {
                       "widgetId": "30-1-0"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_server_duration_percentile"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 }
               ]
@@ -2054,12 +1975,6 @@
                   "h": 37,
                   "i": "0",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readRecords"
-                  ],
-                  "metrics": [
-                    "sampled_slow_trace_record"
-                  ],
                   "graph": {
                     "type": "TopList",
                     "color": "purple"
@@ -2067,10 +1982,12 @@
                   "widget": {
                     "title": "Sampled Slow Traces(ms)"
                   },
-                  "metricConfig": [
-                    {
-                      "topN": "50"
-                    }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "top_n(sampled_slow_trace_record,50,DES)"
+                  ],
+                  "typesOfMQE": [
+                    "RECORD_LIST"
                   ]
                 },
                 {
@@ -2080,12 +1997,6 @@
                   "h": 37,
                   "i": "1",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readRecords"
-                  ],
-                  "metrics": [
-                    "sampled_status_4xx_trace_record"
-                  ],
                   "graph": {
                     "type": "TopList",
                     "color": "purple"
@@ -2093,10 +2004,12 @@
                   "widget": {
                     "title": "Traces from HTTP Code in [400, 500) (ms)"
                   },
-                  "metricConfig": [
-                    {
-                      "topN": "50"
-                    }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "top_n(sampled_status_4xx_trace_record,50,DES)"
+                  ],
+                  "typesOfMQE": [
+                    "RECORD_LIST"
                   ]
                 },
                 {
@@ -2106,12 +2019,6 @@
                   "h": 37,
                   "i": "2",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readRecords"
-                  ],
-                  "metrics": [
-                    "sampled_status_5xx_trace_record"
-                  ],
                   "graph": {
                     "type": "TopList",
                     "color": "purple"
@@ -2119,10 +2026,12 @@
                   "widget": {
                     "title": "Traces from HTTP Code in [500, 600) (ms)"
                   },
-                  "metricConfig": [
-                    {
-                      "topN": "50"
-                    }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "top_n(sampled_status_5xx_trace_record,50,DES)"
+                  ],
+                  "typesOfMQE": [
+                    "RECORD_LIST"
                   ]
                 },
                 {
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service-relation.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service-relation.json
index 07316749f1..9caf7bde50 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service-relation.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service-relation.json
@@ -775,11 +775,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_sr_cluster_up_cx_none_healthy_incr"
                   ],
-                  "metricTypes": [
-                    "readMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -800,11 +801,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_sr_cluster_lb_healthy_panic_incr"
                   ],
-                  "metricTypes": [
-                    "readMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -825,11 +827,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_sr_cluster_up_rq_pending_active"
                   ],
-                  "metricTypes": [
-                    "readMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -850,11 +853,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_sr_cluster_up_cx_active"
                   ],
-                  "metricTypes": [
-                    "readMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -875,11 +879,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_sr_cluster_up_rq_active"
                   ],
-                  "metricTypes": [
-                    "readMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -900,11 +905,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_sr_cluster_up_cx_incr"
                   ],
-                  "metricTypes": [
-                    "readMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
@@ -925,11 +931,12 @@
                     "showXAxis": true,
                     "showYAxis": true
                   },
-                  "metrics": [
+                  "metricMode": "Expression",
+                  "expressions": [
                     "envoy_sr_cluster_up_rq_incr"
                   ],
-                  "metricTypes": [
-                    "readMetricsValues"
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 }
               ]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service.json
index ed8cc7c0f6..c97b24dab6 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh/mesh-service.json
@@ -475,12 +475,6 @@
                   "h": 13,
                   "i": "23",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "service_sidecar_internal_req_latency_nanos"
-                  ],
                   "graph": {
                     "type": "Line",
                     "step": false,
@@ -492,7 +486,14 @@
                   "widget": {
                     "title": "Proxy Sidecar Internal Latency in Nanoseconds (Request)",
                     "tips": "For more details to understand this metrics, refer to https://www.envoyproxy.io/docs/envoy/v1.22.0/api-v3/data/accesslog/v3/accesslog.proto.html#data-accesslog-v3-accesslogcommon"
-                  }
+                  },
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "service_sidecar_internal_req_latency_nanos"
+                  ],
+                  "typesOfMQE":[
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
                   "x": 8,
@@ -501,12 +502,6 @@
                   "h": 13,
                   "i": "24",
                   "type": "Widget",
-                  "metricTypes": [
-                    "readMetricsValues"
-                  ],
-                  "metrics": [
-                    "service_sidecar_internal_resp_latency_nanos"
-                  ],
                   "widget": {
                     "title": "Proxy Sidecar Internal Latency in Nanoseconds (Response)",
                     "tips": "For more details to understand this metrics, refer to https://www.envoyproxy.io/docs/envoy/v1.22.0/api-v3/data/accesslog/v3/accesslog.proto.html#data-accesslog-v3-accesslogcommon"
@@ -518,7 +513,14 @@
                     "showSymbol": true,
                     "showXAxis": true,
                     "showYAxis": true
-                  }
+                  },
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "service_sidecar_internal_resp_latency_nanos"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 }
               ]
             },
@@ -537,32 +539,43 @@
                     "dashboardName": "Mesh-Instance",
                     "fontSize": 12
                   },
-                  "metrics": [
-                    "service_instance_cpm",
-                    "service_instance_sla",
-                    "service_instance_resp_time"
-                  ],
-                  "metricTypes": [
-                    "readMetricsValues",
-                    "readMetricsValues",
-                    "readMetricsValues"
-                  ],
                   "metricConfig": [
                     {
-                      "label": "Load",
                       "unit": "calls or packets / min",
-                      "calculation": "average"
+                      "label": "Load",
+                      "detailLabel": "load"
                     },
                     {
-                      "calculation": "percentageAvg",
+                      "label": "Success Rate",
                       "unit": "%",
-                      "label": "Success Rate"
+                      "detailLabel": "success_rate"
                     },
                     {
-                      "calculation": "average",
                       "label": "Latency",
-                      "unit": "ms"
+                      "unit": "ms",
+                      "detailLabel": "latency"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "avg(service_instance_cpm)",
+                    "avg(service_instance_sla)/100",
+                    "avg(service_instance_resp_time)"
+                  ],
+                  "subExpressions": [
+                    "service_instance_cpm",
+                    "service_instance_sla/100",
+                    "service_instance_resp_time"
+                  ],
+                  "subTypesOfMQE": [
+                    "",
+                    "",
+                    ""
+                  ],
+                  "typesOfMQE":[
+                    "",
+                    "",
+                    ""
                   ]
                 }
               ]
@@ -584,32 +597,38 @@
                     "showXAxis": false,
                     "showYAxis": false
                   },
-                  "metrics": [
-                    "endpoint_cpm",
-                    "endpoint_sla",
-                    "endpoint_resp_time"
-                  ],
-                  "metricTypes": [
-                    "readMetricsValues",
-                    "readMetricsValues",
-                    "readMetricsValues"
-                  ],
                   "metricConfig": [
                     {
                       "label": "Load",
                       "unit": "calls or packets / min",
-                      "calculation": "average"
+                      "detailLabel": "load"
                     },
                     {
-                      "calculation": "percentageAvg",
+                      "label": "Success Rate",
                       "unit": "%",
-                      "label": "Success Rate"
+                      "detailLabel": "success_rate"
                     },
                     {
-                      "calculation": "average",
                       "label": "Latency",
-                      "unit": "ms"
+                      "unit": "ms",
+                      "detailLabel": "latency"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "avg(endpoint_cpm)",
+                    "avg(endpoint_sla)/100",
+                    "avg(endpoint_resp_time)"
+                  ],
+                  "subExpressions": [
+                    "endpoint_cpm",
+                    "endpoint_sla/100",
+                    "endpoint_resp_time"
+                  ],
+                  "subTypesOfMQE": [
+                    "",
+                    "",
+                    ""
                   ]
                 }
               ]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_cp/mesh-control-plane-root.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_cp/mesh-control-plane-root.json
index fb246ae659..0607b42bc8 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_cp/mesh-control-plane-root.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_cp/mesh-control-plane-root.json
@@ -10,9 +10,6 @@
           "h": 51,
           "i": "0",
           "type": "Widget",
-          "widget": {
-            "title": ""
-          },
           "graph": {
             "type": "ServiceList",
             "dashboardName": "Mesh-Control-Plane-Service",
@@ -21,42 +18,44 @@
             "showYAxis": false,
             "showGroup": true
           },
-          "metrics": [
-            "meter_istio_cpu",
-            "meter_istio_go_goroutines",
-            "meter_istio_pilot_xds",
-            "meter_istio_pilot_services",
-            "meter_istio_pilot_virt_services"
-          ],
-          "metricTypes": [
-            "readMetricsValues",
-            "readMetricsValues",
-            "readMetricsValues",
-            "readMetricsValues",
-            "readMetricsValues"
-          ],
-          "moved": false,
           "metricConfig": [
             {
-              "label": "CPU",
-              "calculation": "average"
+              "label": "CPU"
             },
             {
-              "calculation": "average",
               "label": "Goroutines"
             },
             {
-              "calculation": "average",
               "label": "Pilot xDS"
             },
             {
-              "calculation": "average",
               "label": "Pilot Services"
             },
             {
-              "calculation": "average",
               "label": "Pilot Virt Services"
             }
+          ],
+          "metricMode": "Expression",
+          "expressions": [
+            "avg(meter_istio_cpu)",
+            "avg(meter_istio_go_goroutines)",
+            "avg(meter_istio_pilot_xds)",
+            "avg(meter_istio_pilot_services)",
+            "avg(meter_istio_pilot_virt_services)"
+          ],
+          "subExpressions": [
+            "meter_istio_cpu",
+            "meter_istio_go_goroutines",
+            "meter_istio_pilot_xds",
+            "meter_istio_pilot_services",
+            "meter_istio_pilot_virt_services"
+          ],
+          "subTypesOfMQE": [
+            "",
+            "",
+            "",
+            "",
+            ""
           ]
         },
         {
@@ -66,12 +65,6 @@
           "h": 2,
           "i": "100",
           "type": "Text",
-          "metricTypes": [
-            ""
-          ],
-          "metrics": [
-            ""
-          ],
           "graph": {
             "fontColor": "theme",
             "backgroundColor": "theme",
@@ -79,8 +72,7 @@
             "fontSize": 14,
             "textAlign": "left",
             "url": "https://skywalking.apache.org/docs/main/next/en/setup/istio/readme/"
-          },
-          "moved": false
+          }
         }
       ],
       "id": "Mesh-Control-Plane-Root",
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-process-relation.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-process-relation.json
index 1cb792b9bd..cceb6c09b9 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-process-relation.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/mesh_dp/mesh-data-plane-process-relation.json
@@ -5,2283 +5,2048 @@
     "configuration":{
       "children":[
         {
-          "x":0,
-          "y":0,
-          "w":24,
-          "h":43,
-          "i":"30",
-          "type":"Tab",
-          "children":[
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 43,
+          "i": "30",
+          "type": "Tab",
+          "children": [
             {
-              "name":"TCP",
-              "children":[
+              "name": "TCP",
+              "children": [
                 {
-                  "x":0,
-                  "y":0,
-                  "w":6,
-                  "h":11,
-                  "i":"0",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_write_cpm"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 0,
+                  "y": 0,
+                  "w": 6,
+                  "h": 11,
+                  "i": "0",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Write OP Per Minute (client)",
-                    "name":"write_per_minute_client"
+                  "widget": {
+                    "title": "Write OP Per Minute (client)",
+                    "name": "write_per_minute_client"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"1"
+                      "widgetId": "1"
                     },
                     {
-                      "widgetId":"4"
+                      "widgetId": "4"
                     },
                     {
-                      "widgetId":"6"
+                      "widgetId": "6"
                     },
                     {
-                      "widgetId":"8"
+                      "widgetId": "8"
                     },
                     {
-                      "widgetId":"10"
+                      "widgetId": "10"
                     },
                     {
-                      "widgetId":"20"
+                      "widgetId": "20"
                     },
                     {
-                      "widgetId":"21"
+                      "widgetId": "21"
                     },
                     {
-                      "widgetId":"22"
+                      "widgetId": "22"
                     },
                     {
-                      "widgetId":"23"
+                      "widgetId": "23"
                     },
                     {
-                      "widgetId":"28"
+                      "widgetId": "28"
                     },
                     {
-                      "widgetId":"29"
+                      "widgetId": "29"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":12,
-                  "y":0,
-                  "w":6,
-                  "h":11,
-                  "i":"1",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_write_cpm"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 12,
+                  "y": 0,
+                  "w": 6,
+                  "h": 11,
+                  "i": "1",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Write OP Per Minute (server)",
-                    "name":"write_per_minute_server"
+                  "widget": {
+                    "title": "Write OP Per Minute (server)",
+                    "name": "write_per_minute_server"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"0"
+                      "widgetId": "0"
                     },
                     {
-                      "widgetId":"4"
+                      "widgetId": "4"
                     },
                     {
-                      "widgetId":"6"
+                      "widgetId": "6"
                     },
                     {
-                      "widgetId":"8"
+                      "widgetId": "8"
                     },
                     {
-                      "widgetId":"10"
+                      "widgetId": "10"
                     },
                     {
-                      "widgetId":"20"
+                      "widgetId": "20"
                     },
                     {
-                      "widgetId":"21"
+                      "widgetId": "21"
                     },
                     {
-                      "widgetId":"22"
+                      "widgetId": "22"
                     },
                     {
-                      "widgetId":"23"
+                      "widgetId": "23"
                     },
                     {
-                      "widgetId":"28"
+                      "widgetId": "28"
                     },
                     {
-                      "widgetId":"29"
+                      "widgetId": "29"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":0,
-                  "y":33,
-                  "w":6,
-                  "h":11,
-                  "i":"2",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_read_cpm"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 0,
+                  "y": 33,
+                  "w": 6,
+                  "h": 11,
+                  "i": "2",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Read OP Per Minute (client)",
-                    "name":"read_per_minute_server"
+                  "widget": {
+                    "title": "Read OP Per Minute (client)",
+                    "name": "read_per_minute_server"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"3"
+                      "widgetId": "3"
                     },
                     {
-                      "widgetId":"5"
+                      "widgetId": "5"
                     },
                     {
-                      "widgetId":"7"
+                      "widgetId": "7"
                     },
                     {
-                      "widgetId":"9"
+                      "widgetId": "9"
                     },
                     {
-                      "widgetId":"11"
+                      "widgetId": "11"
                     },
                     {
-                      "widgetId":"24"
+                      "widgetId": "24"
                     },
                     {
-                      "widgetId":"25"
+                      "widgetId": "25"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"24"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_read_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":12,
-                  "y":33,
-                  "w":6,
-                  "h":11,
-                  "i":"3",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_read_cpm"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 12,
+                  "y": 33,
+                  "w": 6,
+                  "h": 11,
+                  "i": "3",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Read OP Per Minute (server)"
+                  "widget": {
+                    "title": "Read OP Per Minute (server)"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"2"
+                      "widgetId": "2"
                     },
                     {
-                      "widgetId":"5"
+                      "widgetId": "5"
                     },
                     {
-                      "widgetId":"7"
+                      "widgetId": "7"
                     },
                     {
-                      "widgetId":"9"
+                      "widgetId": "9"
                     },
                     {
-                      "widgetId":"11"
+                      "widgetId": "11"
                     },
                     {
-                      "widgetId":"24"
+                      "widgetId": "24"
                     },
                     {
-                      "widgetId":"25"
+                      "widgetId": "25"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"24"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_read_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":6,
-                  "y":0,
-                  "w":6,
-                  "h":11,
-                  "i":"4",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_write_total_bytes"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Write Package Size (Client) (KB)",
-                    "name":"write_package_size_client"
-                  },
-                  "metricConfig":[
-                    {
-                      "unit":"KB",
-                      "calculation":"byteToKB"
-                    }
-                  ],
-                  "associate":[
+                  "x": 6,
+                  "y": 0,
+                  "w": 6,
+                  "h": 11,
+                  "i": "4",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Write Package Size (Client) (KB)",
+                    "name": "write_package_size_client"
+                  },
+                  "associate": [
 
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_total_bytes/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":6,
-                  "y":33,
-                  "w":6,
-                  "h":11,
-                  "i":"5",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_read_total_bytes"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Read Package Size (Client) (KB)",
-                    "name":"read_package_szie_client"
-                  },
-                  "metricConfig":[
-                    {
-                      "unit":"KB",
-                      "calculation":"byteToKB"
-                    }
-                  ],
-                  "associate":[
+                  "x": 6,
+                  "y": 33,
+                  "w": 6,
+                  "h": 11,
+                  "i": "5",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Read Package Size (Client) (KB)",
+                    "name": "read_package_szie_client"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"2"
+                      "widgetId": "2"
                     },
                     {
-                      "widgetId":"3"
+                      "widgetId": "3"
                     },
                     {
-                      "widgetId":"7"
+                      "widgetId": "7"
                     },
                     {
-                      "widgetId":"9"
+                      "widgetId": "9"
                     },
                     {
-                      "widgetId":"11"
+                      "widgetId": "11"
                     },
                     {
-                      "widgetId":"24"
+                      "widgetId": "24"
                     },
                     {
-                      "widgetId":"25"
+                      "widgetId": "25"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"24"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_read_total_bytes/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":18,
-                  "y":0,
-                  "w":6,
-                  "h":11,
-                  "i":"6",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_write_total_bytes"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "metricConfig":[
-                    {
-                      "unit":"KB",
-                      "calculation":"byteToKB"
-                    }
-                  ],
-                  "widget":{
-                    "title":"Write Package Size (Server) (KB)",
-                    "name":"write_package_size_server"
+                  "x": 18,
+                  "y": 0,
+                  "w": 6,
+                  "h": 11,
+                  "i": "6",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "associate":[
+                  "widget": {
+                    "title": "Write Package Size (Server) (KB)",
+                    "name": "write_package_size_server"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"1"
+                      "widgetId": "1"
                     },
                     {
-                      "widgetId":"4"
+                      "widgetId": "4"
                     },
                     {
-                      "widgetId":"0"
+                      "widgetId": "0"
                     },
                     {
-                      "widgetId":"8"
+                      "widgetId": "8"
                     },
                     {
-                      "widgetId":"10"
+                      "widgetId": "10"
                     },
                     {
-                      "widgetId":"20"
+                      "widgetId": "20"
                     },
                     {
-                      "widgetId":"21"
+                      "widgetId": "21"
                     },
                     {
-                      "widgetId":"22"
+                      "widgetId": "22"
                     },
                     {
-                      "widgetId":"23"
+                      "widgetId": "23"
                     },
                     {
-                      "widgetId":"28"
+                      "widgetId": "28"
                     },
                     {
-                      "widgetId":"29"
+                      "widgetId": "29"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_total_bytes/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":18,
-                  "y":33,
-                  "w":6,
-                  "h":11,
-                  "i":"7",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_read_total_bytes"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "metricConfig":[
-                    {
-                      "unit":"KB",
-                      "calculation":"byteToKB"
-                    }
-                  ],
-                  "widget":{
-                    "title":"Read Package Size (Server) (KB)",
-                    "name":"read_package_size_server"
+                  "x": 18,
+                  "y": 33,
+                  "w": 6,
+                  "h": 11,
+                  "i": "7",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "associate":[
+                  "widget": {
+                    "title": "Read Package Size (Server) (KB)",
+                    "name": "read_package_size_server"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"2"
+                      "widgetId": "2"
                     },
                     {
-                      "widgetId":"5"
+                      "widgetId": "5"
                     },
                     {
-                      "widgetId":"3"
+                      "widgetId": "3"
                     },
                     {
-                      "widgetId":"9"
+                      "widgetId": "9"
                     },
                     {
-                      "widgetId":"11"
+                      "widgetId": "11"
                     },
                     {
-                      "widgetId":"24"
+                      "widgetId": "24"
                     },
                     {
-                      "widgetId":"25"
+                      "widgetId": "25"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"24"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_read_total_bytes/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":0,
-                  "y":11,
-                  "w":6,
-                  "h":11,
-                  "i":"8",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_write_avg_exe_time"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Write OP Avg Time (Client) (ms)",
-                    "name":"write_avg_time_client"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond",
-                      "unit":"ms"
-                    }
-                  ],
-                  "associate":[
+                  "x": 0,
+                  "y": 11,
+                  "w": 6,
+                  "h": 11,
+                  "i": "8",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Write OP Avg Time (Client) (ms)",
+                    "name": "write_avg_time_client"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"1"
+                      "widgetId": "1"
                     },
                     {
-                      "widgetId":"4"
+                      "widgetId": "4"
                     },
                     {
-                      "widgetId":"6"
+                      "widgetId": "6"
                     },
                     {
-                      "widgetId":"0"
+                      "widgetId": "0"
                     },
                     {
-                      "widgetId":"10"
+                      "widgetId": "10"
                     },
                     {
-                      "widgetId":"20"
+                      "widgetId": "20"
                     },
                     {
-                      "widgetId":"21"
+                      "widgetId": "21"
                     },
                     {
-                      "widgetId":"22"
+                      "widgetId": "22"
                     },
                     {
-                      "widgetId":"23"
+                      "widgetId": "23"
                     },
                     {
-                      "widgetId":"28"
+                      "widgetId": "28"
                     },
                     {
-                      "widgetId":"29"
+                      "widgetId": "29"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":8,
-                    "sourceId":"4"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":0,
-                  "y":44,
-                  "w":6,
-                  "h":11,
-                  "i":"9",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_read_avg_exe_time"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Read OP Avg Time (Client) (ms)",
-                    "name":"read_avg_time_client"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond",
-                      "unit":"ms"
-                    }
-                  ],
-                  "associate":[
+                  "x": 0,
+                  "y": 44,
+                  "w": 6,
+                  "h": 11,
+                  "i": "9",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Read OP Avg Time (Client) (ms)",
+                    "name": "read_avg_time_client"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"2"
+                      "widgetId": "2"
                     },
                     {
-                      "widgetId":"5"
+                      "widgetId": "5"
                     },
                     {
-                      "widgetId":"7"
+                      "widgetId": "7"
                     },
                     {
-                      "widgetId":"3"
+                      "widgetId": "3"
                     },
                     {
-                      "widgetId":"11"
+                      "widgetId": "11"
                     },
                     {
-                      "widgetId":"24"
+                      "widgetId": "24"
                     },
                     {
-                      "widgetId":"25"
+                      "widgetId": "25"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"24"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_read_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":12,
-                  "y":11,
-                  "w":6,
-                  "h":11,
-                  "i":"10",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_write_avg_exe_time"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Write OP Avg Time (Server) (ms)",
-                    "name":"write_avg_time_server"
-                  },
-                  "metricConfig":[
-                    {
-                      "unit":"ms",
-                      "calculation":"nanosecondToMillisecond"
-                    }
-                  ],
-                  "associate":[
+                  "x": 12,
+                  "y": 11,
+                  "w": 6,
+                  "h": 11,
+                  "i": "10",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Write OP Avg Time (Server) (ms)",
+                    "name": "write_avg_time_server"
+                  },
+                  "associate": [
 
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":12,
-                  "y":44,
-                  "w":6,
-                  "h":11,
-                  "i":"11",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_read_avg_exe_time"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Read OP Avg Time (Server) (ms)",
-                    "name":"read_avg_time_server"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond",
-                      "unit":"ms"
-                    }
-                  ],
-                  "associate":[
+                  "x": 12,
+                  "y": 44,
+                  "w": 6,
+                  "h": 11,
+                  "i": "11",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Read OP Avg Time (Server) (ms)",
+                    "name": "read_avg_time_server"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"2"
+                      "widgetId": "2"
                     },
                     {
-                      "widgetId":"5"
+                      "widgetId": "5"
                     },
                     {
-                      "widgetId":"7"
+                      "widgetId": "7"
                     },
                     {
-                      "widgetId":"9"
+                      "widgetId": "9"
                     },
                     {
-                      "widgetId":"3"
+                      "widgetId": "3"
                     },
                     {
-                      "widgetId":"24"
+                      "widgetId": "24"
                     },
                     {
-                      "widgetId":"25"
+                      "widgetId": "25"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"24"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_read_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":0,
-                  "y":55,
-                  "w":6,
-                  "h":11,
-                  "i":"12",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_connect_cpm"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 0,
+                  "y": 55,
+                  "w": 6,
+                  "h": 11,
+                  "i": "12",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Connect OP Per Minute (client)",
-                    "name":"connect_per_minute_client"
+                  "widget": {
+                    "title": "Connect OP Per Minute (client)",
+                    "name": "connect_per_minute_client"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"13"
+                      "widgetId": "13"
                     },
                     {
-                      "widgetId":"14"
+                      "widgetId": "14"
                     },
                     {
-                      "widgetId":"15"
+                      "widgetId": "15"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_connect_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
-                  "x":6,
-                  "y":55,
-                  "w":6,
-                  "h":11,
-                  "i":"13",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_connect_exe_time"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Connect Avg Time (Client) (ms)",
-                    "name":"connect_avg_time_client"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond",
-                      "unit":"ms"
-                    }
-                  ],
-                  "associate":[
+                  "x": 6,
+                  "y": 55,
+                  "w": 6,
+                  "h": 11,
+                  "i": "13",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Connect Avg Time (Client) (ms)",
+                    "name": "connect_avg_time_client"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"12"
+                      "widgetId": "12"
                     },
                     {
-                      "widgetId":"14"
+                      "widgetId": "14"
                     },
                     {
-                      "widgetId":"15"
+                      "widgetId": "15"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"12"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_connect_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":12,
-                  "y":55,
-                  "w":6,
-                  "h":11,
-                  "i":"14",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_connect_cpm"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 12,
+                  "y": 55,
+                  "w": 6,
+                  "h": 11,
+                  "i": "14",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Connect OP Per Minute (server)",
-                    "name":"connect_per_minute_server"
+                  "widget": {
+                    "title": "Connect OP Per Minute (server)",
+                    "name": "connect_per_minute_server"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"13"
+                      "widgetId": "13"
                     },
                     {
-                      "widgetId":"12"
+                      "widgetId": "12"
                     },
                     {
-                      "widgetId":"15"
+                      "widgetId": "15"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"12"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_connect_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":18,
-                  "y":55,
-                  "w":6,
-                  "h":11,
-                  "i":"15",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_connect_avg_exe_time"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Connect Avg Time (Server) (ms)",
-                    "name":"connect_avg_time_server"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond",
-                      "unit":"ms"
-                    }
-                  ],
-                  "associate":[
+                  "x": 18,
+                  "y": 55,
+                  "w": 6,
+                  "h": 11,
+                  "i": "15",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Connect Avg Time (Server) (ms)",
+                    "name": "connect_avg_time_server"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"13"
+                      "widgetId": "13"
                     },
                     {
-                      "widgetId":"14"
+                      "widgetId": "14"
                     },
                     {
-                      "widgetId":"12"
+                      "widgetId": "12"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"12"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_connect_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":0,
-                  "y":66,
-                  "w":6,
-                  "h":11,
-                  "i":"16",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_close_cpm"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 0,
+                  "y": 66,
+                  "w": 6,
+                  "h": 11,
+                  "i": "16",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Close OP Per Minute (client)",
-                    "name":"close_per_minute_client"
+                  "widget": {
+                    "title": "Close OP Per Minute (client)",
+                    "name": "close_per_minute_client"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"17"
+                      "widgetId": "17"
                     },
                     {
-                      "widgetId":"18"
+                      "widgetId": "18"
                     },
                     {
-                      "widgetId":"19"
+                      "widgetId": "19"
                     }
+                  ],
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_close_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
                   ]
                 },
                 {
-                  "x":6,
-                  "y":66,
-                  "w":6,
-                  "h":11,
-                  "i":"17",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_close_avg_exe_time"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Close Avg Time (Client) (ms)",
-                    "name":"close_avg_time_client"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond",
-                      "unit":"ms"
-                    }
-                  ],
-                  "associate":[
+                  "x": 6,
+                  "y": 66,
+                  "w": 6,
+                  "h": 11,
+                  "i": "17",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Close Avg Time (Client) (ms)",
+                    "name": "close_avg_time_client"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"16"
+                      "widgetId": "16"
                     },
                     {
-                      "widgetId":"18"
+                      "widgetId": "18"
                     },
                     {
-                      "widgetId":"19"
+                      "widgetId": "19"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"16"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_close_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":12,
-                  "y":66,
-                  "w":6,
-                  "h":11,
-                  "i":"18",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_close_cpm"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 12,
+                  "y": 66,
+                  "w": 6,
+                  "h": 11,
+                  "i": "18",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Close OP Per Minute (server)",
-                    "name":"close_per_minute_server"
+                  "widget": {
+                    "title": "Close OP Per Minute (server)",
+                    "name": "close_per_minute_server"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"17"
+                      "widgetId": "17"
                     },
                     {
-                      "widgetId":"16"
+                      "widgetId": "16"
                     },
                     {
-                      "widgetId":"19"
+                      "widgetId": "19"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"16"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_close_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":18,
-                  "y":66,
-                  "w":6,
-                  "h":11,
-                  "i":"19",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_close_avg_exe_time"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Close Avg Time (Server) (ms)",
-                    "name":"close_avg_time_server"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond",
-                      "unit":"ms"
-                    }
-                  ],
-                  "associate":[
+                  "x": 18,
+                  "y": 66,
+                  "w": 6,
+                  "h": 11,
+                  "i": "19",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Close Avg Time (Server) (ms)",
+                    "name": "close_avg_time_server"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"17"
+                      "widgetId": "17"
                     },
                     {
-                      "widgetId":"18"
+                      "widgetId": "18"
                     },
                     {
-                      "widgetId":"16"
+                      "widgetId": "16"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"16"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_close_avg_exe_time/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":6,
-                  "y":22,
-                  "w":6,
-                  "h":11,
-                  "i":"20",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_write_rtt_time_percentile"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 6,
+                  "y": 22,
+                  "w": 6,
+                  "h": 11,
+                  "i": "20",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Write OP RTT Percentile (client) (microsecond)",
-                    "name":"write_rtt_percentile_client"
+                  "widget": {
+                    "title": "Write OP RTT Percentile (client) (microsecond)",
+                    "name": "write_rtt_percentile_client"
                   },
-                  "metricConfig":[
-                    {
-                      "unit":"ns"
-                    }
-                  ],
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"1"
+                      "widgetId": "1"
                     },
                     {
-                      "widgetId":"4"
+                      "widgetId": "4"
                     },
                     {
-                      "widgetId":"6"
+                      "widgetId": "6"
                     },
                     {
-                      "widgetId":"8"
+                      "widgetId": "8"
                     },
                     {
-                      "widgetId":"10"
+                      "widgetId": "10"
                     },
                     {
-                      "widgetId":"0"
+                      "widgetId": "0"
                     },
                     {
-                      "widgetId":"21"
+                      "widgetId": "21"
                     },
                     {
-                      "widgetId":"22"
+                      "widgetId": "22"
                     },
                     {
-                      "widgetId":"23"
+                      "widgetId": "23"
                     },
                     {
-                      "widgetId":"28"
+                      "widgetId": "28"
                     },
                     {
-                      "widgetId":"29"
+                      "widgetId": "29"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_rtt_time_percentile"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":18,
-                  "y":22,
-                  "w":6,
-                  "h":11,
-                  "i":"21",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_write_rtt_time_percentile"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 18,
+                  "y": 22,
+                  "w": 6,
+                  "h": 11,
+                  "i": "21",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Write OP RTT Percentile (server) (microsecond)",
-                    "name":"write_rtt_percentile_server"
+                  "widget": {
+                    "title": "Write OP RTT Percentile (server) (microsecond)",
+                    "name": "write_rtt_percentile_server"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"1"
+                      "widgetId": "1"
                     },
                     {
-                      "widgetId":"4"
+                      "widgetId": "4"
                     },
                     {
-                      "widgetId":"6"
+                      "widgetId": "6"
                     },
                     {
-                      "widgetId":"8"
+                      "widgetId": "8"
                     },
                     {
-                      "widgetId":"10"
+                      "widgetId": "10"
                     },
                     {
-                      "widgetId":"20"
+                      "widgetId": "20"
                     },
                     {
-                      "widgetId":"0"
+                      "widgetId": "0"
                     },
                     {
-                      "widgetId":"22"
+                      "widgetId": "22"
                     },
                     {
-                      "widgetId":"23"
+                      "widgetId": "23"
                     },
                     {
-                      "widgetId":"28"
+                      "widgetId": "28"
                     },
                     {
-                      "widgetId":"29"
+                      "widgetId": "29"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_rtt_time_percentile"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":6,
-                  "y":11,
-                  "w":6,
-                  "h":11,
-                  "i":"22",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_write_exe_time_percentile"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Write OP Exe Time Percentile (client) (ms)",
-                    "name":"write_exe_time_percentile_client"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond"
-                    }
-                  ],
-                  "associate":[
+                  "x": 6,
+                  "y": 11,
+                  "w": 6,
+                  "h": 11,
+                  "i": "22",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Write OP Exe Time Percentile (client) (ms)",
+                    "name": "write_exe_time_percentile_client"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"1"
+                      "widgetId": "1"
                     },
                     {
-                      "widgetId":"4"
+                      "widgetId": "4"
                     },
                     {
-                      "widgetId":"6"
+                      "widgetId": "6"
                     },
                     {
-                      "widgetId":"8"
+                      "widgetId": "8"
                     },
                     {
-                      "widgetId":"10"
+                      "widgetId": "10"
                     },
                     {
-                      "widgetId":"20"
+                      "widgetId": "20"
                     },
                     {
-                      "widgetId":"21"
+                      "widgetId": "21"
                     },
                     {
-                      "widgetId":"0"
+                      "widgetId": "0"
                     },
                     {
-                      "widgetId":"23"
+                      "widgetId": "23"
                     },
                     {
-                      "widgetId":"28"
+                      "widgetId": "28"
                     },
                     {
-                      "widgetId":"29"
+                      "widgetId": "29"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_exe_time_percentile/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":18,
-                  "y":11,
-                  "w":6,
-                  "h":11,
-                  "i":"23",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_write_exe_time_percentile"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Write OP Exe Time Percentile (server) (ms)",
-                    "name":"write_exe_time_percentile_server"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond"
-                    }
-                  ],
-                  "associate":[
+                  "x": 18,
+                  "y": 11,
+                  "w": 6,
+                  "h": 11,
+                  "i": "23",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Write OP Exe Time Percentile (server) (ms)",
+                    "name": "write_exe_time_percentile_server"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"1"
+                      "widgetId": "1"
                     },
                     {
-                      "widgetId":"4"
+                      "widgetId": "4"
                     },
                     {
-                      "widgetId":"6"
+                      "widgetId": "6"
                     },
                     {
-                      "widgetId":"8"
+                      "widgetId": "8"
                     },
                     {
-                      "widgetId":"10"
+                      "widgetId": "10"
                     },
                     {
-                      "widgetId":"20"
+                      "widgetId": "20"
                     },
                     {
-                      "widgetId":"21"
+                      "widgetId": "21"
                     },
                     {
-                      "widgetId":"22"
+                      "widgetId": "22"
                     },
                     {
-                      "widgetId":"0"
+                      "widgetId": "0"
                     },
                     {
-                      "widgetId":"28"
+                      "widgetId": "28"
                     },
                     {
-                      "widgetId":"29"
+                      "widgetId": "29"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_exe_time_percentile/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":6,
-                  "y":44,
-                  "w":6,
-                  "h":11,
-                  "i":"24",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_read_exe_time_percentile"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Read OP Exe Time Percentile (client) (ms)",
-                    "name":"read_exe_time_percentile_client"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond"
-                    }
-                  ],
-                  "associate":[
+                  "x": 6,
+                  "y": 44,
+                  "w": 6,
+                  "h": 11,
+                  "i": "24",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Read OP Exe Time Percentile (client) (ms)",
+                    "name": "read_exe_time_percentile_client"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"2"
+                      "widgetId": "2"
                     },
                     {
-                      "widgetId":"5"
+                      "widgetId": "5"
                     },
                     {
-                      "widgetId":"7"
+                      "widgetId": "7"
                     },
                     {
-                      "widgetId":"9"
+                      "widgetId": "9"
                     },
                     {
-                      "widgetId":"11"
+                      "widgetId": "11"
                     },
                     {
-                      "widgetId":"3"
+                      "widgetId": "3"
                     },
                     {
-                      "widgetId":"25"
+                      "widgetId": "25"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"5"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_read_exe_time_percentile/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":18,
-                  "y":44,
-                  "w":6,
-                  "h":11,
-                  "i":"25",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_read_exe_time_percentile"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Read OP Exe Time Percentile (server) (ms)",
-                    "name":"read_exe_time_percentile_server"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"nanosecondToMillisecond"
-                    }
-                  ],
-                  "associate":[
+                  "x": 18,
+                  "y": 44,
+                  "w": 6,
+                  "h": 11,
+                  "i": "25",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Read OP Exe Time Percentile (server) (ms)",
+                    "name": "read_exe_time_percentile_server"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"2"
+                      "widgetId": "2"
                     },
                     {
-                      "widgetId":"5"
+                      "widgetId": "5"
                     },
                     {
-                      "widgetId":"7"
+                      "widgetId": "7"
                     },
                     {
-                      "widgetId":"9"
+                      "widgetId": "9"
                     },
                     {
-                      "widgetId":"11"
+                      "widgetId": "11"
                     },
                     {
-                      "widgetId":"24"
+                      "widgetId": "24"
                     },
                     {
-                      "widgetId":"3"
+                      "widgetId": "3"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"24"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_read_exe_time_percentile/1000000"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":0,
-                  "y":22,
-                  "w":6,
-                  "h":11,
-                  "i":"28",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_client_write_avg_rtt_time"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 0,
+                  "y": 22,
+                  "w": 6,
+                  "h": 11,
+                  "i": "28",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Write OP Avg RTT (Client) (microsecond)",
-                    "name":"write_avg_rtt_client"
+                  "widget": {
+                    "title": "Write OP Avg RTT (Client) (microsecond)",
+                    "name": "write_avg_rtt_client"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"1"
+                      "widgetId": "1"
                     },
                     {
-                      "widgetId":"4"
+                      "widgetId": "4"
                     },
                     {
-                      "widgetId":"6"
+                      "widgetId": "6"
                     },
                     {
-                      "widgetId":"8"
+                      "widgetId": "8"
                     },
                     {
-                      "widgetId":"10"
+                      "widgetId": "10"
                     },
                     {
-                      "widgetId":"20"
+                      "widgetId": "20"
                     },
                     {
-                      "widgetId":"21"
+                      "widgetId": "21"
                     },
                     {
-                      "widgetId":"22"
+                      "widgetId": "22"
                     },
                     {
-                      "widgetId":"23"
+                      "widgetId": "23"
                     },
                     {
-                      "widgetId":"0"
+                      "widgetId": "0"
                     },
                     {
-                      "widgetId":"29"
+                      "widgetId": "29"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_client_write_avg_rtt_time"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":12,
-                  "y":22,
-                  "w":6,
-                  "h":11,
-                  "i":"29",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_server_write_avg_rtt_time"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 12,
+                  "y": 22,
+                  "w": 6,
+                  "h": 11,
+                  "i": "29",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Write OP Avg RTT (Server) (microsecond)",
-                    "name":"write_avg_rtt_server"
+                  "widget": {
+                    "title": "Write OP Avg RTT (Server) (microsecond)",
+                    "name": "write_avg_rtt_server"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"1"
+                      "widgetId": "1"
                     },
                     {
-                      "widgetId":"4"
+                      "widgetId": "4"
                     },
                     {
-                      "widgetId":"6"
+                      "widgetId": "6"
                     },
                     {
-                      "widgetId":"8"
+                      "widgetId": "8"
                     },
                     {
-                      "widgetId":"10"
+                      "widgetId": "10"
                     },
                     {
-                      "widgetId":"20"
+                      "widgetId": "20"
                     },
                     {
-                      "widgetId":"21"
+                      "widgetId": "21"
                     },
                     {
-                      "widgetId":"22"
+                      "widgetId": "22"
                     },
                     {
-                      "widgetId":"23"
+                      "widgetId": "23"
                     },
                     {
-                      "widgetId":"28"
+                      "widgetId": "28"
                     },
                     {
-                      "widgetId":"0"
+                      "widgetId": "0"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":9,
-                    "sourceId":"8"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_server_write_avg_rtt_time"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 }
               ]
             },
             {
-              "name":"HTTP/1.x",
-              "children":[
+              "name": "HTTP/1.x",
+              "children": [
                 {
-                  "x":0,
-                  "y":0,
-                  "w":12,
-                  "h":11,
-                  "i":"0",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_http1_request_cpm"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 0,
+                  "y": 0,
+                  "w": 12,
+                  "h": 11,
+                  "i": "0",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Request CPM",
-                    "name":"http1-request-cpm"
+                  "widget": {
+                    "title": "Request CPM",
+                    "name": "http1-request-cpm"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"30-1-1"
+                      "widgetId": "30-1-1"
                     },
                     {
-                      "widgetId":"30-1-2"
+                      "widgetId": "30-1-2"
                     },
                     {
-                      "widgetId":"30-1-3"
+                      "widgetId": "30-1-3"
                     },
                     {
-                      "widgetId":"30-1-4"
+                      "widgetId": "30-1-4"
                     },
                     {
-                      "widgetId":"30-1-5"
+                      "widgetId": "30-1-5"
                     },
                     {
-                      "widgetId":"30-1-6"
+                      "widgetId": "30-1-6"
                     },
                     {
-                      "widgetId":"30-1-7"
+                      "widgetId": "30-1-7"
                     },
                     {
-                      "widgetId":"30-1-8"
+                      "widgetId": "30-1-8"
                     },
                     {
-                      "widgetId":"30-1-9"
+                      "widgetId": "30-1-9"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":8,
-                    "sourceId":"30-1-1"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_request_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":12,
-                  "y":0,
-                  "w":12,
-                  "h":11,
-                  "i":"1",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_http1_response_status_cpm"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 12,
+                  "y": 0,
+                  "w": 12,
+                  "h": 11,
+                  "i": "1",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"HTTP Response CPM",
-                    "name":"http1-response-cpm"
+                  "widget": {
+                    "title": "HTTP Response CPM",
+                    "name": "http1-response-cpm"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"30-1-0"
+                      "widgetId": "30-1-0"
                     },
                     {
-                      "widgetId":"30-1-2"
+                      "widgetId": "30-1-2"
                     },
                     {
-                      "widgetId":"30-1-3"
+                      "widgetId": "30-1-3"
                     },
                     {
-                      "widgetId":"30-1-4"
+                      "widgetId": "30-1-4"
                     },
                     {
-                      "widgetId":"30-1-5"
+                      "widgetId": "30-1-5"
                     },
                     {
-                      "widgetId":"30-1-6"
+                      "widgetId": "30-1-6"
                     },
                     {
-                      "widgetId":"30-1-7"
+                      "widgetId": "30-1-7"
                     },
                     {
-                      "widgetId":"30-1-8"
+                      "widgetId": "30-1-8"
                     },
                     {
-                      "widgetId":"30-1-9"
+                      "widgetId": "30-1-9"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":4,
-                    "sourceId":"30-1-6"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_response_status_cpm"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":0,
-                  "y":11,
-                  "w":6,
-                  "h":11,
-                  "i":"2",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_http1_request_package_size"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Request Package Avg Size (KB)",
-                    "name":"http1-request-package-avg-size"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"byteToKB"
-                    }
-                  ],
-                  "associate":[
+                  "x": 0,
+                  "y": 11,
+                  "w": 6,
+                  "h": 11,
+                  "i": "2",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Request Package Avg Size (KB)",
+                    "name": "http1-request-package-avg-size"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"30-1-1"
+                      "widgetId": "30-1-1"
                     },
                     {
-                      "widgetId":"30-1-0"
+                      "widgetId": "30-1-0"
                     },
                     {
-                      "widgetId":"30-1-3"
+                      "widgetId": "30-1-3"
                     },
                     {
-                      "widgetId":"30-1-4"
+                      "widgetId": "30-1-4"
                     },
                     {
-                      "widgetId":"30-1-5"
+                      "widgetId": "30-1-5"
                     },
                     {
-                      "widgetId":"30-1-6"
+                      "widgetId": "30-1-6"
                     },
                     {
-                      "widgetId":"30-1-7"
+                      "widgetId": "30-1-7"
                     },
                     {
-                      "widgetId":"30-1-8"
+                      "widgetId": "30-1-8"
                     },
                     {
-                      "widgetId":"30-1-9"
+                      "widgetId": "30-1-9"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":8,
-                    "sourceId":"30-1-1"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_request_package_size/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":12,
-                  "y":11,
-                  "w":6,
-                  "h":11,
-                  "i":"3",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_http1_response_package_size"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Response Package Avg Size (KB)",
-                    "name":"http1-response-package-avg-size"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"byteToKB"
-                    }
-                  ],
-                  "associate":[
+                  "x": 12,
+                  "y": 11,
+                  "w": 6,
+                  "h": 11,
+                  "i": "3",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Response Package Avg Size (KB)",
+                    "name": "http1-response-package-avg-size"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"30-1-1"
+                      "widgetId": "30-1-1"
                     },
                     {
-                      "widgetId":"30-1-2"
+                      "widgetId": "30-1-2"
                     },
                     {
-                      "widgetId":"30-1-0"
+                      "widgetId": "30-1-0"
                     },
                     {
-                      "widgetId":"30-1-4"
+                      "widgetId": "30-1-4"
                     },
                     {
-                      "widgetId":"30-1-5"
+                      "widgetId": "30-1-5"
                     },
                     {
-                      "widgetId":"30-1-6"
+                      "widgetId": "30-1-6"
                     },
                     {
-                      "widgetId":"30-1-7"
+                      "widgetId": "30-1-7"
                     },
                     {
-                      "widgetId":"30-1-8"
+                      "widgetId": "30-1-8"
                     },
                     {
-                      "widgetId":"30-1-9"
+                      "widgetId": "30-1-9"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":8,
-                    "sourceId":"30-1-1"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_response_package_size/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":6,
-                  "y":11,
-                  "w":6,
-                  "h":11,
-                  "i":"4",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_http1_request_package_size_percentile"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Request Package Size Percentile (KB)",
-                    "name":"http1-request-package-size-percentile"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"byteToKB"
-                    }
-                  ],
-                  "associate":[
+                  "x": 6,
+                  "y": 11,
+                  "w": 6,
+                  "h": 11,
+                  "i": "4",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Request Package Size Percentile (KB)",
+                    "name": "http1-request-package-size-percentile"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"30-1-1"
+                      "widgetId": "30-1-1"
                     },
                     {
-                      "widgetId":"30-1-2"
+                      "widgetId": "30-1-2"
                     },
                     {
-                      "widgetId":"30-1-3"
+                      "widgetId": "30-1-3"
                     },
                     {
-                      "widgetId":"30-1-0"
+                      "widgetId": "30-1-0"
                     },
                     {
-                      "widgetId":"30-1-5"
+                      "widgetId": "30-1-5"
                     },
                     {
-                      "widgetId":"30-1-6"
+                      "widgetId": "30-1-6"
                     },
                     {
-                      "widgetId":"30-1-7"
+                      "widgetId": "30-1-7"
                     },
                     {
-                      "widgetId":"30-1-8"
+                      "widgetId": "30-1-8"
                     },
                     {
-                      "widgetId":"30-1-9"
+                      "widgetId": "30-1-9"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":8,
-                    "sourceId":"30-1-1"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_request_package_size_percentile/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":18,
-                  "y":11,
-                  "w":6,
-                  "h":11,
-                  "i":"5",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_http1_response_package_size_percentile"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
-                  },
-                  "widget":{
-                    "title":"Response Package Size Percentile (KB)",
-                    "name":"http1-response-package-size-percentile"
-                  },
-                  "metricConfig":[
-                    {
-                      "calculation":"byteToKB"
-                    }
-                  ],
-                  "associate":[
+                  "x": 18,
+                  "y": 11,
+                  "w": 6,
+                  "h": 11,
+                  "i": "5",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
+                  },
+                  "widget": {
+                    "title": "Response Package Size Percentile (KB)",
+                    "name": "http1-response-package-size-percentile"
+                  },
+                  "associate": [
                     {
-                      "widgetId":"30-1-1"
+                      "widgetId": "30-1-1"
                     },
                     {
-                      "widgetId":"30-1-2"
+                      "widgetId": "30-1-2"
                     },
                     {
-                      "widgetId":"30-1-3"
+                      "widgetId": "30-1-3"
                     },
                     {
-                      "widgetId":"30-1-4"
+                      "widgetId": "30-1-4"
                     },
                     {
-                      "widgetId":"30-1-0"
+                      "widgetId": "30-1-0"
                     },
                     {
-                      "widgetId":"30-1-6"
+                      "widgetId": "30-1-6"
                     },
                     {
-                      "widgetId":"30-1-7"
+                      "widgetId": "30-1-7"
                     },
                     {
-                      "widgetId":"30-1-8"
+                      "widgetId": "30-1-8"
                     },
                     {
-                      "widgetId":"30-1-9"
+                      "widgetId": "30-1-9"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":8,
-                    "sourceId":"30-1-1"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_response_package_size_percentile/1024"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":0,
-                  "y":22,
-                  "w":6,
-                  "h":11,
-                  "i":"6",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_http1_client_duration"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 0,
+                  "y": 22,
+                  "w": 6,
+                  "h": 11,
+                  "i": "6",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Response Avg Duration (client) (ms)",
-                    "name":"http1-resposne-avg-duration-client"
+                  "widget": {
+                    "title": "Response Avg Duration (client) (ms)",
+                    "name": "http1-resposne-avg-duration-client"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"30-1-1"
+                      "widgetId": "30-1-1"
                     },
                     {
-                      "widgetId":"30-1-2"
+                      "widgetId": "30-1-2"
                     },
                     {
-                      "widgetId":"30-1-3"
+                      "widgetId": "30-1-3"
                     },
                     {
-                      "widgetId":"30-1-4"
+                      "widgetId": "30-1-4"
                     },
                     {
-                      "widgetId":"30-1-5"
+                      "widgetId": "30-1-5"
                     },
                     {
-                      "widgetId":"30-1-0"
+                      "widgetId": "30-1-0"
                     },
                     {
-                      "widgetId":"30-1-7"
+                      "widgetId": "30-1-7"
                     },
                     {
-                      "widgetId":"30-1-8"
+                      "widgetId": "30-1-8"
                     },
                     {
-                      "widgetId":"30-1-9"
+                      "widgetId": "30-1-9"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":8,
-                    "sourceId":"30-1-1"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_client_duration"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":6,
-                  "y":22,
-                  "w":6,
-                  "h":11,
-                  "i":"7",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_http1_client_duration_percentile"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 6,
+                  "y": 22,
+                  "w": 6,
+                  "h": 11,
+                  "i": "7",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Response Duration Percentile (client) (ms)",
-                    "name":"http1-response-duration-percentile-client"
+                  "widget": {
+                    "title": "Response Duration Percentile (client) (ms)",
+                    "name": "http1-response-duration-percentile-client"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"30-1-1"
+                      "widgetId": "30-1-1"
                     },
                     {
-                      "widgetId":"30-1-2"
+                      "widgetId": "30-1-2"
                     },
                     {
-                      "widgetId":"30-1-3"
+                      "widgetId": "30-1-3"
                     },
                     {
-                      "widgetId":"30-1-4"
+                      "widgetId": "30-1-4"
                     },
                     {
-                      "widgetId":"30-1-5"
+                      "widgetId": "30-1-5"
                     },
                     {
-                      "widgetId":"30-1-6"
+                      "widgetId": "30-1-6"
                     },
                     {
-                      "widgetId":"30-1-0"
+                      "widgetId": "30-1-0"
                     },
                     {
-                      "widgetId":"30-1-8"
+                      "widgetId": "30-1-8"
                     },
                     {
-                      "widgetId":"30-1-9"
+                      "widgetId": "30-1-9"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":8,
-                    "sourceId":"30-1-1"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_client_duration_percentile"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":12,
-                  "y":22,
-                  "w":6,
-                  "h":11,
-                  "i":"8",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_http1_server_duration"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 12,
+                  "y": 22,
+                  "w": 6,
+                  "h": 11,
+                  "i": "8",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Response Avg Duration (server) (ms)",
-                    "name":"http1-response-avg-duration-server"
+                  "widget": {
+                    "title": "Response Avg Duration (server) (ms)",
+                    "name": "http1-response-avg-duration-server"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"30-1-1"
+                      "widgetId": "30-1-1"
                     },
                     {
-                      "widgetId":"30-1-2"
+                      "widgetId": "30-1-2"
                     },
                     {
-                      "widgetId":"30-1-3"
+                      "widgetId": "30-1-3"
                     },
                     {
-                      "widgetId":"30-1-4"
+                      "widgetId": "30-1-4"
                     },
                     {
-                      "widgetId":"30-1-5"
+                      "widgetId": "30-1-5"
                     },
                     {
-                      "widgetId":"30-1-6"
+                      "widgetId": "30-1-6"
                     },
                     {
-                      "widgetId":"30-1-7"
+                      "widgetId": "30-1-7"
                     },
                     {
-                      "widgetId":"30-1-0"
+                      "widgetId": "30-1-0"
                     },
                     {
-                      "widgetId":"30-1-9"
+                      "widgetId": "30-1-9"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":8,
-                    "sourceId":"30-1-1"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_server_duration"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 },
                 {
-                  "x":18,
-                  "y":22,
-                  "w":6,
-                  "h":11,
-                  "i":"9",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readLabeledMetricsValues"
-                  ],
-                  "metrics":[
-                    "process_relation_http1_server_duration_percentile"
-                  ],
-                  "graph":{
-                    "type":"Line",
-                    "step":false,
-                    "smooth":false,
-                    "showSymbol":false,
-                    "showXAxis":true,
-                    "showYAxis":true
+                  "x": 18,
+                  "y": 22,
+                  "w": 6,
+                  "h": 11,
+                  "i": "9",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "Line",
+                    "step": false,
+                    "smooth": false,
+                    "showSymbol": false,
+                    "showXAxis": true,
+                    "showYAxis": true
                   },
-                  "widget":{
-                    "title":"Response Duration Percentile (server) (ms)",
-                    "name":"http1-response-duration-percentile-server"
+                  "widget": {
+                    "title": "Response Duration Percentile (server) (ms)",
+                    "name": "http1-response-duration-percentile-server"
                   },
-                  "associate":[
+                  "associate": [
                     {
-                      "widgetId":"30-1-1"
+                      "widgetId": "30-1-1"
                     },
                     {
-                      "widgetId":"30-1-2"
+                      "widgetId": "30-1-2"
                     },
                     {
-                      "widgetId":"30-1-3"
+                      "widgetId": "30-1-3"
                     },
                     {
-                      "widgetId":"30-1-4"
+                      "widgetId": "30-1-4"
                     },
                     {
-                      "widgetId":"30-1-5"
+                      "widgetId": "30-1-5"
                     },
                     {
-                      "widgetId":"30-1-6"
+                      "widgetId": "30-1-6"
                     },
                     {
-                      "widgetId":"30-1-7"
+                      "widgetId": "30-1-7"
                     },
                     {
-                      "widgetId":"30-1-8"
+                      "widgetId": "30-1-8"
                     },
                     {
-                      "widgetId":"30-1-0"
+                      "widgetId": "30-1-0"
                     }
                   ],
-                  "filters":{
-                    "dataIndex":8,
-                    "sourceId":"30-1-1"
-                  }
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "process_relation_http1_server_duration_percentile"
+                  ],
+                  "typesOfMQE": [
+                    "TIME_SERIES_VALUES"
+                  ]
                 }
               ]
             },
             {
-              "name":"HTTP Requests",
-              "children":[
+              "name": "HTTP Requests",
+              "children": [
                 {
-                  "x":0,
-                  "y":2,
-                  "w":8,
-                  "h":37,
-                  "i":"0",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readRecords"
-                  ],
-                  "metrics":[
-                    "sampled_slow_trace_record"
-                  ],
-                  "graph":{
-                    "type":"TopList",
-                    "color":"purple"
-                  },
-                  "widget":{
-                    "title":"Sampled Slow Traces(ms)"
-                  },
-                  "metricConfig":[
-                    {
-                      "topN":"50"
-                    }
+                  "x": 0,
+                  "y": 2,
+                  "w": 8,
+                  "h": 37,
+                  "i": "0",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "TopList",
+                    "color": "purple"
+                  },
+                  "widget": {
+                    "title": "Sampled Slow Traces(ms)"
+                  },
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "top_n(sampled_slow_trace_record,50,DES)"
+                  ],
+                  "typesOfMQE": [
+                    "RECORD_LIST"
                   ]
                 },
                 {
-                  "x":8,
-                  "y":2,
-                  "w":8,
-                  "h":37,
-                  "i":"1",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readRecords"
-                  ],
-                  "metrics":[
-                    "sampled_status_4xx_trace_record"
-                  ],
-                  "graph":{
-                    "type":"TopList",
-                    "color":"purple"
-                  },
-                  "widget":{
-                    "title":"Traces from HTTP Code in [400, 500) (ms)"
-                  },
-                  "metricConfig":[
-                    {
-                      "topN":"50"
-                    }
+                  "x": 8,
+                  "y": 2,
+                  "w": 8,
+                  "h": 37,
+                  "i": "1",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "TopList",
+                    "color": "purple"
+                  },
+                  "widget": {
+                    "title": "Traces from HTTP Code in [400, 500) (ms)"
+                  },
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "top_n(sampled_status_4xx_trace_record,50,DES)"
+                  ],
+                  "typesOfMQE": [
+                    "RECORD_LIST"
                   ]
                 },
                 {
-                  "x":16,
-                  "y":2,
-                  "w":8,
-                  "h":37,
-                  "i":"2",
-                  "type":"Widget",
-                  "metricTypes":[
-                    "readRecords"
-                  ],
-                  "metrics":[
-                    "sampled_status_5xx_trace_record"
-                  ],
-                  "graph":{
-                    "type":"TopList",
-                    "color":"purple"
-                  },
-                  "widget":{
-                    "title":"Traces from HTTP Code in [500, 600) (ms)"
-                  },
-                  "metricConfig":[
-                    {
-                      "topN":"50"
-                    }
+                  "x": 16,
+                  "y": 2,
+                  "w": 8,
+                  "h": 37,
+                  "i": "2",
+                  "type": "Widget",
+                  "graph": {
+                    "type": "TopList",
+                    "color": "purple"
+                  },
+                  "widget": {
+                    "title": "Traces from HTTP Code in [500, 600) (ms)"
+                  },
+                  "metricMode": "Expression",
+                  "expressions": [
+                    "top_n(sampled_status_5xx_trace_record,50,DES)"
+                  ],
+                  "typesOfMQE": [
+                    "RECORD_LIST"
                   ]
                 },
                 {
-                  "x":0,
-                  "y":0,
-                  "w":24,
-                  "h":2,
-                  "i":"3",
-                  "type":"Text",
-                  "graph":{
-                    "fontColor":"white",
-                    "backgroundColor":"blue",
-                    "content":"The sampled HTTP 1.x requests within tracing context.",
-                    "fontSize":14,
-                    "textAlign":"left"
+                  "x": 0,
+                  "y": 0,
+                  "w": 24,
+                  "h": 2,
+                  "i": "3",
+                  "type": "Text",
+                  "graph": {
+                    "fontColor": "theme",
+                    "backgroundColor": "theme",
+                    "content": "The sampled HTTP 1.x requests within tracing context.",
+                    "fontSize": 14,
+                    "textAlign": "left"
                   }
                 }
               ]
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-instance.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-instance.json
index 5161f51eee..fdeae5577a 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-instance.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-instance.json
@@ -18,11 +18,12 @@
             "type": "Bar",
             "showBackground": true
           },
-          "metrics": [
+          "metricMode": "Expression",
+          "expressions": [
             "meter_oap_instance_jvm_gc_count"
           ],
-          "metricTypes": [
-            "readLabeledMetricsValues"
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -43,17 +44,12 @@
             "showXAxis": true,
             "showYAxis": true
           },
-          "metrics": [
-            "meter_oap_instance_jvm_memory_bytes_used"
+          "metricMode": "Expression",
+          "expressions": [
+            "meter_oap_instance_jvm_memory_bytes_used/1024/1024"
           ],
-          "metricTypes": [
-            "readMetricsValues"
-          ],
-          "metricConfig": [
-            {
-              "calculation": "byteToMB",
-              "label": "used"
-            }
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -74,11 +70,12 @@
             "showXAxis": true,
             "showYAxis": true
           },
-          "metrics": [
+          "metricMode": "Expression",
+          "expressions": [
             "meter_oap_instance_jvm_gc_time"
           ],
-          "metricTypes": [
-            "readLabeledMetricsValues"
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -95,14 +92,6 @@
             "type": "Bar",
             "showBackground": true
           },
-          "metrics": [
-            "meter_oap_instance_mesh_count",
-            "meter_oap_instance_mesh_analysis_error_count"
-          ],
-          "metricTypes": [
-            "readMetricsValues",
-            "readMetricsValues"
-          ],
           "metricConfig": [
             {
               "label": "count"
@@ -110,6 +99,15 @@
             {
               "label": "error_count"
             }
+          ],
+          "metricMode": "Expression",
+          "expressions": [
+            "meter_oap_instance_mesh_count",
+            "meter_oap_instance_mesh_analysis_error_count"
+          ],
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES",
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -130,17 +128,12 @@
             "showXAxis": true,
             "showYAxis": true
           },
-          "metrics": [
-            "meter_oap_instance_trace_latency_percentile"
-          ],
-          "metricTypes": [
-            "readLabeledMetricsValues"
+          "metricMode": "Expression",
+          "expressions": [
+            "relabels(meter_oap_instance_trace_latency_percentile{_='50,75,90,95,99'},_='P50,P75,P90,P95,P99')"
           ],
-          "metricConfig": [
-            {
-              "labelsIndex": "50,70,90,99",
-              "label": "P50,P70,P90,P99"
-            }
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -159,16 +152,6 @@
             "showXAxis": true,
             "showYAxis": true
           },
-          "metrics": [
-            "meter_oap_jvm_class_loaded_count",
-            "meter_oap_jvm_class_total_unloaded_count",
-            "meter_oap_jvm_class_total_loaded_count"
-          ],
-          "metricTypes": [
-            "readMetricsValues",
-            "readMetricsValues",
-            "readMetricsValues"
-          ],
           "metricConfig": [
             {
               "label": "loaded"
@@ -179,6 +162,17 @@
             {
               "label": "total_loaded"
             }
+          ],
+          "metricMode": "Expression",
+          "expressions": [
+            "meter_oap_jvm_class_loaded_count",
+            "meter_oap_jvm_class_total_unloaded_count",
+            "meter_oap_jvm_class_total_loaded_count"
+          ],
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES",
+            "TIME_SERIES_VALUES",
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -195,14 +189,6 @@
             "type": "Bar",
             "showBackground": true
           },
-          "metrics": [
-            "meter_oap_instance_persistence_prepare_count",
-            "meter_oap_instance_persistence_execute_count"
-          ],
-          "metricTypes": [
-            "readMetricsValues",
-            "readMetricsValues"
-          ],
           "metricConfig": [
             {
               "label": "prepare_count"
@@ -210,6 +196,15 @@
             {
               "label": "execute_count"
             }
+          ],
+          "metricMode": "Expression",
+          "expressions": [
+            "meter_oap_instance_persistence_prepare_count",
+            "meter_oap_instance_persistence_execute_count"
+          ],
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES",
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -230,16 +225,6 @@
             "showXAxis": true,
             "showYAxis": true
           },
-          "metrics": [
-            "meter_oap_jvm_thread_live_count",
-            "meter_oap_jvm_thread_peak_count",
-            "meter_oap_jvm_thread_daemon_count"
-          ],
-          "metricTypes": [
-            "readMetricsValues",
-            "readMetricsValues",
-            "readMetricsValues"
-          ],
           "metricConfig": [
             {
               "label": "live"
@@ -250,6 +235,17 @@
             {
               "label": "daemon"
             }
+          ],
+          "metricMode": "Expression",
+          "expressions": [
+            "meter_oap_jvm_thread_live_count",
+            "meter_oap_jvm_thread_peak_count",
+            "meter_oap_jvm_thread_daemon_count"
+          ],
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES",
+            "TIME_SERIES_VALUES",
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -270,17 +266,12 @@
             "showXAxis": true,
             "showYAxis": true
           },
-          "metrics": [
-            "meter_oap_instance_persistence_execute_percentile"
+          "metricMode": "Expression",
+          "expressions": [
+            "relabels(meter_oap_instance_persistence_execute_percentile{_='50,75,90,95,99'},_='P50,P75,P90,P95,P99')"
           ],
-          "metricTypes": [
-            "readLabeledMetricsValues"
-          ],
-          "metricConfig": [
-            {
-              "labelsIndex": "50,70,90,99",
-              "label": "P50,P70,P90,P99"
-            }
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -301,17 +292,12 @@
             "showXAxis": true,
             "showYAxis": true
           },
-          "metrics": [
-            "meter_oap_instance_persistence_prepare_percentile"
-          ],
-          "metricTypes": [
-            "readLabeledMetricsValues"
+          "metricMode": "Expression",
+          "expressions": [
+            "relabels(meter_oap_instance_persistence_prepare_percentile{_='50,75,90,95,99'},_='P50,P75,P90,P95,P99')"
           ],
-          "metricConfig": [
-            {
-              "labelsIndex": "50,70,90,99",
-              "label": "P50,P70,P90,P99"
-            }
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -328,18 +314,6 @@
             "type": "Bar",
             "showBackground": true
           },
-          "metrics": [
-            "meter_oap_jvm_thread_runnable_count",
-            "meter_oap_jvm_thread_timed_waiting_count",
-            "meter_oap_jvm_thread_blocked_count",
-            "meter_oap_jvm_thread_waiting_count"
-          ],
-          "metricTypes": [
-            "readMetricsValues",
-            "readMetricsValues",
-            "readMetricsValues",
-            "readMetricsValues"
-          ],
           "metricConfig": [
             {
               "label": "runnable"
@@ -353,6 +327,19 @@
             {
               "label": "waiting"
             }
+          ],
+          "metricMode": "Expression",
+          "expressions": [
+            "meter_oap_jvm_thread_runnable_count",
+            "meter_oap_jvm_thread_timed_waiting_count",
+            "meter_oap_jvm_thread_blocked_count",
+            "meter_oap_jvm_thread_waiting_count"
+          ],
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES",
+            "TIME_SERIES_VALUES",
+            "TIME_SERIES_VALUES",
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -373,11 +360,12 @@
             "showXAxis": true,
             "showYAxis": true
           },
-          "metrics": [
+          "metricMode": "Expression",
+          "expressions": [
             "meter_oap_instance_metrics_aggregation"
           ],
-          "metricTypes": [
-            "readLabeledMetricsValues"
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -398,17 +386,12 @@
             "showXAxis": true,
             "showYAxis": true
           },
-          "metrics": [
-            "meter_oap_instance_mesh_latency_percentile"
+          "metricMode": "Expression",
+          "expressions": [
+            "relabels(meter_oap_instance_mesh_latency_percentile{_='50,75,90,95,99'},_='P50,P75,P90,P95,P99')"
           ],
-          "metricTypes": [
-            "readLabeledMetricsValues"
-          ],
-          "metricConfig": [
-            {
-              "label": "P50,P70,P90,P99",
-              "labelsIndex": "50,70,90,99"
-            }
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -425,14 +408,6 @@
             "type": "Bar",
             "showBackground": true
           },
-          "metrics": [
-            "meter_oap_instance_trace_count",
-            "meter_oap_instance_trace_analysis_error_count"
-          ],
-          "metricTypes": [
-            "readMetricsValues",
-            "readMetricsValues"
-          ],
           "metricConfig": [
             {
               "label": "count"
@@ -440,6 +415,15 @@
             {
               "label": "error_count"
             }
+          ],
+          "metricMode": "Expression",
+          "expressions": [
+            "meter_oap_instance_trace_count",
+            "meter_oap_instance_trace_analysis_error_count"
+          ],
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES",
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -460,16 +444,12 @@
             "showXAxis": true,
             "showYAxis": true
           },
-          "metrics": [
+          "metricMode": "Expression",
+          "expressions": [
             "meter_oap_instance_cpu_percentage"
           ],
-          "metricTypes": [
-            "readMetricsValues"
-          ],
-          "metricConfig": [
-            {
-              "label": "percentage"
-            }
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
           ]
         },
         {
@@ -479,12 +459,6 @@
           "h": 13,
           "i": "15",
           "type": "Widget",
-          "metricTypes": [
-            "readLabeledMetricsValues"
-          ],
-          "metrics": [
-            "meter_oap_instance_metrics_persistent_cache"
-          ],
           "graph": {
             "type": "Line",
             "step": false,
@@ -495,7 +469,14 @@
           },
           "widget": {
             "title": "Metrics Persistent Cache Count(Per Minute)"
-          }
+          },
+          "metricMode": "Expression",
+          "expressions": [
+            "meter_oap_instance_metrics_persistent_cache"
+          ],
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
+          ]
         }
       ],
       "layer": "SO11Y_OAP",
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-service.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-service.json
index 718ccc8ee4..a85ab2a9ee 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-service.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_oap/so11y-service.json
@@ -11,35 +11,35 @@
           "h": 52,
           "i": "0",
           "type": "Widget",
-          "widget": {
-            "title": ""
-          },
           "graph": {
             "type": "InstanceList",
             "dashboardName": "Self-Observability-OAP-Instance",
             "fontSize": 12
           },
-          "standard": {},
-          "metrics": [
-            "meter_oap_instance_cpu_percentage",
-            "meter_oap_instance_persistence_execute_count"
-          ],
-          "metricTypes": [
-            "readMetricsValues",
-            "readMetricsValues"
-          ],
-          "moved": false,
           "metricConfig": [
             {
               "label": "CPU Avg Usage",
-              "unit": "%",
-              "calculation": "average"
+              "detailLabel": "cpu_avg_usage",
+              "unit": "%"
             },
             {
               "label": "Persistence Count",
               "unit": "Per 5 Minutes",
-              "calculation": "average"
+              "detailLabel": "persistence_count"
             }
+          ],
+          "metricMode": "Expression",
+          "expressions": [
+            "avg(meter_oap_instance_cpu_percentage)",
+            "avg(meter_oap_instance_persistence_execute_count)"
+          ],
+          "subExpressions": [
+            "meter_oap_instance_cpu_percentage",
+            "meter_oap_instance_persistence_execute_count"
+          ],
+          "subTypesOfMQE": [
+            "",
+            ""
           ]
         },
         {
@@ -49,12 +49,6 @@
           "h": 2,
           "i": "100",
           "type": "Text",
-          "metricTypes": [
-            ""
-          ],
-          "metrics": [
-            ""
-          ],
           "graph": {
             "fontColor": "theme",
             "backgroundColor": "theme",
@@ -62,8 +56,7 @@
             "fontSize": 14,
             "textAlign": "left",
             "url": "https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-telemetry/"
-          },
-          "moved": false
+          }
         }
       ],
       "id": "Self-Observability-OAP-Service",
diff --git a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_satellite/so11y-root.json b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_satellite/so11y-root.json
index 7696963d55..144cb285b4 100644
--- a/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_satellite/so11y-root.json
+++ b/oap-server/server-starter/src/main/resources/ui-initialized-templates/so11y_satellite/so11y-root.json
@@ -1,239 +1,217 @@
-
 [
   {
-    "id":"Self-Observability-Satellite-Root",
-    "configuration":{
-      "children":[
+    "id": "Self-Observability-Satellite-Root",
+    "configuration": {
+      "children": [
         {
-          "x":8,
-          "y":2,
-          "w":8,
-          "h":14,
-          "i":"1",
-          "type":"Widget",
-          "widget":{
-            "title":"Connection Count"
+          "x": 8,
+          "y": 2,
+          "w": 8,
+          "h": 14,
+          "i": "1",
+          "type": "Widget",
+          "widget": {
+            "title": "Connection Count"
           },
-          "graph":{
-            "type":"Line",
-            "step":false,
-            "smooth":false,
-            "showSymbol":false,
-            "showXAxis":true,
-            "showYAxis":true
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
           },
-          "metrics":[
+          "metricMode": "Expression",
+          "expressions": [
             "satellite_service_grpc_connect_count"
           ],
-          "metricTypes":[
-            "readMetricsValues"
-          ],
-          "moved":false
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
+          ]
         },
         {
-          "x":0,
-          "y":2,
-          "w":8,
-          "h":14,
-          "i":"0",
-          "type":"Widget",
-          "widget":{
-            "title":"CPU (%)"
+          "x": 0,
+          "y": 2,
+          "w": 8,
+          "h": 14,
+          "i": "0",
+          "type": "Widget",
+          "widget": {
+            "title": "CPU (%)"
           },
-          "graph":{
-            "type":"Line",
-            "step":false,
-            "smooth":false,
-            "showSymbol":false,
-            "showXAxis":true,
-            "showYAxis":true
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
           },
-          "metrics":[
+          "metricMode": "Expression",
+          "expressions": [
             "satellite_service_server_cpu_utilization"
           ],
-          "metricTypes":[
-            "readMetricsValues"
-          ],
-          "moved":false
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
+          ]
         },
         {
-          "x":16,
-          "y":2,
-          "w":8,
-          "h":14,
-          "i":"2",
-          "type":"Widget",
-          "widget":{
-            "title":"Queue Used Count",
-            "tips":"The used count of queue of pipeline"
+          "x": 16,
+          "y": 2,
+          "w": 8,
+          "h": 14,
+          "i": "2",
+          "type": "Widget",
+          "widget": {
+            "title": "Queue Used Count",
+            "tips": "The used count of queue of pipeline"
           },
-          "graph":{
-            "type":"Line",
-            "step":false,
-            "smooth":false,
-            "showSymbol":false,
-            "showXAxis":true,
-            "showYAxis":true
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
           },
-          "metrics":[
+          "metricMode": "Expression",
+          "expressions": [
             "satellite_service_queue_used_count"
           ],
-          "metricTypes":[
-            "readLabeledMetricsValues"
-          ],
-          "metricConfig":[
-
-          ],
-          "moved":false
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
+          ]
         },
         {
-          "x":0,
-          "y":16,
-          "w":12,
-          "h":14,
-          "i":"3",
-          "type":"Widget",
-          "widget":{
-            "title":"Receive Event Count",
-            "tips":"Receive count of event from downstream"
+          "x": 0,
+          "y": 16,
+          "w": 12,
+          "h": 14,
+          "i": "3",
+          "type": "Widget",
+          "widget": {
+            "title": "Receive Event Count",
+            "tips": "Receive count of event from downstream"
           },
-          "graph":{
-            "type":"Line",
-            "step":false,
-            "smooth":false,
-            "showSymbol":false,
-            "showXAxis":true,
-            "showYAxis":true
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
           },
-          "metrics":[
+          "metricMode": "Expression",
+          "expressions": [
             "satellite_service_receive_event_count"
           ],
-          "metricTypes":[
-            "readLabeledMetricsValues"
-          ],
-          "metricConfig":[
-
-          ],
-          "moved":false
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
+          ]
         },
         {
-          "x":12,
-          "y":16,
-          "w":12,
-          "h":14,
-          "i":"4",
-          "type":"Widget",
-          "widget":{
-            "title":"Fetch Event Count",
-            "tips":"Fetch count of event from downstream"
+          "x": 12,
+          "y": 16,
+          "w": 12,
+          "h": 14,
+          "i": "4",
+          "type": "Widget",
+          "widget": {
+            "title": "Fetch Event Count",
+            "tips": "Fetch count of event from downstream"
           },
-          "graph":{
-            "type":"Line",
-            "step":false,
-            "smooth":false,
-            "showSymbol":false,
-            "showXAxis":true,
-            "showYAxis":true
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
           },
-          "metrics":[
+          "metricMode": "Expression",
+          "expressions": [
             "satellite_service_fetch_event_count"
           ],
-          "metricTypes":[
-            "readLabeledMetricsValues"
-          ],
-          "metricConfig":[
-
-          ],
-          "moved":false
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
+          ]
         },
         {
-          "x":0,
-          "y":30,
-          "w":12,
-          "h":15,
-          "i":"5",
-          "type":"Widget",
-          "widget":{
-            "title":"Queue Input Count",
-            "tips":"The event count of push to the queue"
+          "x": 0,
+          "y": 30,
+          "w": 12,
+          "h": 15,
+          "i": "5",
+          "type": "Widget",
+          "widget": {
+            "title": "Queue Input Count",
+            "tips": "The event count of push to the queue"
           },
-          "graph":{
-            "type":"Line",
-            "step":false,
-            "smooth":false,
-            "showSymbol":false,
-            "showXAxis":true,
-            "showYAxis":true
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
           },
-          "metrics":[
+          "metricMode": "Expression",
+          "expressions": [
             "satellite_service_queue_input_count"
           ],
-          "metricTypes":[
-            "readLabeledMetricsValues"
-          ],
-          "metricConfig":[
-
-          ],
-          "moved":false
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
+          ]
         },
         {
-          "x":12,
-          "y":30,
-          "w":12,
-          "h":15,
-          "i":"6",
-          "type":"Widget",
-          "widget":{
-            "title":"Queue Output Count",
-            "tips":"The event count of push data to the upstream"
+          "x": 12,
+          "y": 30,
+          "w": 12,
+          "h": 15,
+          "i": "6",
+          "type": "Widget",
+          "widget": {
+            "title": "Queue Output Count",
+            "tips": "The event count of push data to the upstream"
           },
-          "graph":{
-            "type":"Line",
-            "step":false,
-            "smooth":false,
-            "showSymbol":false,
-            "showXAxis":true,
-            "showYAxis":true
+          "graph": {
+            "type": "Line",
+            "step": false,
+            "smooth": false,
+            "showSymbol": false,
+            "showXAxis": true,
+            "showYAxis": true
           },
-          "metrics":[
+          "metricMode": "Expression",
+          "expressions": [
             "satellite_service_send_event_count"
           ],
-          "metricTypes":[
-            "readLabeledMetricsValues"
-          ],
-          "metricConfig":[
-
-          ],
-          "moved":false
+          "typesOfMQE": [
+            "TIME_SERIES_VALUES"
+          ]
         },
         {
-          "x":0,
-          "y":0,
-          "w":24,
-          "h":2,
-          "i":"8",
-          "type":"Text",
-          "metricTypes":[
-            ""
-          ],
-          "metrics":[
-            ""
-          ],
-          "graph":{
-            "fontColor":"theme",
-            "backgroundColor":"theme",
-            "content":"Satellite: an open-source agent designed for the cloud-native infrastructures, which provides a low-cost, high-efficient, and more secure way to collect telemetry data. It is the recommended load balancer for telemetry collecting.",
-            "fontSize":14,
-            "textAlign":"left",
-            "url":"https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-load-balancer/"
-          },
-          "moved":false
+          "x": 0,
+          "y": 0,
+          "w": 24,
+          "h": 2,
+          "i": "8",
+          "type": "Text",
+          "graph": {
+            "fontColor": "theme",
+            "backgroundColor": "theme",
+            "content": "Satellite: an open-source agent designed for the cloud-native infrastructures, which provides a low-cost, high-efficient, and more secure way to collect telemetry data. It is the recommended load balancer for telemetry collecting.",
+            "fontSize": 14,
+            "textAlign": "left",
+            "url": "https://skywalking.apache.org/docs/main/next/en/setup/backend/backend-load-balancer/"
+          }
         }
       ],
-      "layer":"SO11Y_SATELLITE",
-      "entity":"Service",
-      "name":"Self-Observability-Satellite-Root",
-      "isRoot":true
+      "id": "Self-Observability-Satellite-Root",
+      "layer": "SO11Y_SATELLITE",
+      "entity": "Service",
+      "name": "Self-Observability-Satellite-Root",
+      "isRoot": true
     }
   }
-]
+]
\ No newline at end of file
diff --git a/test/e2e-v2/cases/aws/dynamodb/dynamodb-cases.yaml b/test/e2e-v2/cases/aws/dynamodb/dynamodb-cases.yaml
index 1f623dcfe2..2bbea23dd1 100644
--- a/test/e2e-v2/cases/aws/dynamodb/dynamodb-cases.yaml
+++ b/test/e2e-v2/cases/aws/dynamodb/dynamodb-cases.yaml
@@ -19,46 +19,46 @@ cases:
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
     expected: expected/service.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_account_max_writes --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_account_max_writes --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_max_provisioned_read_capacity_utilization --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_max_provisioned_read_capacity_utilization --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_account_max_table_level_reads --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_account_max_table_level_reads --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_account_max_table_level_writes --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_account_max_table_level_writes --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_account_provisioned_read_capacity_utilization --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_account_provisioned_read_capacity_utilization --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_time_to_live_deleted_item_count --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_time_to_live_deleted_item_count --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_user_errors --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_user_errors --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_read_system_errors --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_read_system_errors --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_write_system_errors --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_write_system_errors --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_scan_returned_item_count --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_scan_returned_item_count --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
   - query: |
-      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear \
-        --name=aws_dynamodb_query_returned_item_count --service-name aws-dynamodb::xxxxxxxx |yq e 'to_entries' -
+      swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec \
+        --expression=aws_dynamodb_query_returned_item_count --service-name aws-dynamodb::xxxxxxxx
     expected: expected/metrics-has-value.yml
\ No newline at end of file
diff --git a/test/e2e-v2/cases/aws/dynamodb/expected/metrics-has-value.yml b/test/e2e-v2/cases/aws/dynamodb/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/aws/dynamodb/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/aws/dynamodb/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/cluster/cluster-cases.yaml b/test/e2e-v2/cases/cluster/cluster-cases.yaml
index 56d5215496..7d757eee7c 100644
--- a/test/e2e-v2/cases/cluster/cluster-cases.yaml
+++ b/test/e2e-v2/cases/cluster/cluster-cases.yaml
@@ -41,13 +41,13 @@
     - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql instance list --service-name=test-service
       expected: expected/service-instance.yml
     # metrics minute
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26 0259" --end "2022-01-26 0301" |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26 0259" --end "2022-01-26 0301"
       expected: expected/metrics-minute-first.yml
     # metrics toHour
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26 01" --end "2022-01-26 05" |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26 01" --end "2022-01-26 05"
       expected: expected/metrics-hour-first.yml
     # metrics toDay
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26" --end "2022-01-27" |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26" --end "2022-01-27"
       expected: expected/metrics-day-first.yml
     # send metrics to each oap second time UTC 2022-01-26 03:10:00
     - query: |
@@ -56,11 +56,11 @@
         sleep 10;
       expected: expected/send-metrics-rsp.yml
     # metrics minute
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26 0309" --end "2022-01-26 0311" |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26 0309" --end "2022-01-26 0311"
       expected: expected/metrics-minute-second.yml
     # metrics toHour
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26 01" --end "2022-01-26 05" |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26 01" --end "2022-01-26 05"
       expected: expected/metrics-hour-second.yml
     # metrics toDay
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26" --end "2022-01-27" |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=test_meter_downsampling_sum --instance-name=test-instance --service-name=test-service --start "2022-01-26" --end "2022-01-27"
       expected: expected/metrics-day-second.yml
diff --git a/test/e2e-v2/cases/cluster/expected/metrics-day-first.yml b/test/e2e-v2/cases/cluster/expected/metrics-day-first.yml
index cff0a0b2b6..6789cc532f 100644
--- a/test/e2e-v2/cases/cluster/expected/metrics-day-first.yml
+++ b/test/e2e-v2/cases/cluster/expected/metrics-day-first.yml
@@ -12,11 +12,16 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-- key: 2022-01-26
-  value:
-    value: 200
-    isemptyvalue: false
-- key: 2022-01-27
-  value:
-    value: 0
-    isemptyvalue: true
+
+type: TIME_SERIES_VALUES
+results:
+  - metric:
+      labels: []
+    values:
+      - id: "1643155200000"
+        value: "200"
+        traceid: null
+      - id: "1643241600000"
+        value: null
+        traceid: null
+error: null
\ No newline at end of file
diff --git a/test/e2e-v2/cases/cluster/expected/metrics-day-second.yml b/test/e2e-v2/cases/cluster/expected/metrics-day-second.yml
index a4acb73330..9440735d30 100644
--- a/test/e2e-v2/cases/cluster/expected/metrics-day-second.yml
+++ b/test/e2e-v2/cases/cluster/expected/metrics-day-second.yml
@@ -12,11 +12,16 @@
 # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 # See the License for the specific language governing permissions and
 # limitations under the License.
-- key: 2022-01-26
-  value:
-    value: 400
-    isemptyvalue: false
-- key: 2022-01-27
-  value:
-    value: 0
-    isemptyvalue: true
+
+type: TIME_SERIES_VALUES
+results:
+  - metric:
+      labels: []
+    values:
+      - id: "1643155200000"
+        value: "400"
+        traceid: null
+      - id: "1643241600000"
+        value: null
+        traceid: null
+error: null
\ No newline at end of file
diff --git a/test/e2e-v2/cases/cluster/expected/metrics-hour-first.yml b/test/e2e-v2/cases/cluster/expected/metrics-hour-first.yml
index f3fb0ba08a..5e153fe759 100644
--- a/test/e2e-v2/cases/cluster/expected/metrics-hour-first.yml
+++ b/test/e2e-v2/cases/cluster/expected/metrics-hour-first.yml
@@ -13,23 +13,24 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-- key: 2022-01-26 01
-  value:
-    value: 0
-    isemptyvalue: true
-- key: 2022-01-26 02
-  value:
-    value: 0
-    isemptyvalue: true
-- key: 2022-01-26 03
-  value:
-    value: 200
-    isemptyvalue: false
-- key: 2022-01-26 04
-  value:
-    value: 0
-    isemptyvalue: true
-- key: 2022-01-26 05
-  value:
-    value: 0
-    isemptyvalue: true
+type: TIME_SERIES_VALUES
+results:
+  - metric:
+      labels: []
+    values:
+      - id: "1643158800000"
+        value: null
+        traceid: null
+      - id: "1643162400000"
+        value: null
+        traceid: null
+      - id: "1643166000000"
+        value: "200"
+        traceid: null
+      - id: "1643169600000"
+        value: null
+        traceid: null
+      - id: "1643173200000"
+        value: null
+        traceid: null
+error: null
\ No newline at end of file
diff --git a/test/e2e-v2/cases/cluster/expected/metrics-hour-second.yml b/test/e2e-v2/cases/cluster/expected/metrics-hour-second.yml
index 105885e20e..a63f62e298 100644
--- a/test/e2e-v2/cases/cluster/expected/metrics-hour-second.yml
+++ b/test/e2e-v2/cases/cluster/expected/metrics-hour-second.yml
@@ -13,23 +13,24 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-- key: 2022-01-26 01
-  value:
-    value: 0
-    isemptyvalue: true
-- key: 2022-01-26 02
-  value:
-    value: 0
-    isemptyvalue: true
-- key: 2022-01-26 03
-  value:
-    value: 400
-    isemptyvalue: false
-- key: 2022-01-26 04
-  value:
-    value: 0
-    isemptyvalue: true
-- key: 2022-01-26 05
-  value:
-    value: 0
-    isemptyvalue: true
+type: TIME_SERIES_VALUES
+results:
+  - metric:
+      labels: []
+    values:
+      - id: "1643158800000"
+        value: null
+        traceid: null
+      - id: "1643162400000"
+        value: null
+        traceid: null
+      - id: "1643166000000"
+        value: "400"
+        traceid: null
+      - id: "1643169600000"
+        value: null
+        traceid: null
+      - id: "1643173200000"
+        value: null
+        traceid: null
+error: null
\ No newline at end of file
diff --git a/test/e2e-v2/cases/cluster/expected/metrics-minute-first.yml b/test/e2e-v2/cases/cluster/expected/metrics-minute-first.yml
index 9cc56bc1fa..68f0d0db8d 100644
--- a/test/e2e-v2/cases/cluster/expected/metrics-minute-first.yml
+++ b/test/e2e-v2/cases/cluster/expected/metrics-minute-first.yml
@@ -13,15 +13,18 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-- key: 2022-01-26 0259
-  value:
-    value: 0
-    isemptyvalue: true
-- key: 2022-01-26 0300
-  value:
-    value: 200
-    isemptyvalue: false
-- key: 2022-01-26 0301
-  value:
-    value: 0
-    isemptyvalue: true
+type: TIME_SERIES_VALUES
+results:
+  - metric:
+      labels: []
+    values:
+      - id: "1643165940000"
+        value: null
+        traceid: null
+      - id: "1643166000000"
+        value: "200"
+        traceid: null
+      - id: "1643166060000"
+        value: null
+        traceid: null
+error: null
\ No newline at end of file
diff --git a/test/e2e-v2/cases/cluster/expected/metrics-minute-second.yml b/test/e2e-v2/cases/cluster/expected/metrics-minute-second.yml
index 0d342500d3..7823c8c412 100644
--- a/test/e2e-v2/cases/cluster/expected/metrics-minute-second.yml
+++ b/test/e2e-v2/cases/cluster/expected/metrics-minute-second.yml
@@ -13,15 +13,18 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-- key: 2022-01-26 0309
-  value:
-    value: 0
-    isemptyvalue: true
-- key: 2022-01-26 0310
-  value:
-    value: 200
-    isemptyvalue: false
-- key: 2022-01-26 0311
-  value:
-    value: 0
-    isemptyvalue: true
+type: TIME_SERIES_VALUES
+results:
+  - metric:
+      labels: []
+    values:
+      - id: "1643166540000"
+        value: null
+        traceid: null
+      - id: "1643166600000"
+        value: "200"
+        traceid: null
+      - id: "1643166660000"
+        value: null
+        traceid: null
+error: null
\ No newline at end of file
diff --git a/test/e2e-v2/cases/elasticsearch/elasticsearch-cases.yaml b/test/e2e-v2/cases/elasticsearch/elasticsearch-cases.yaml
index 82ddbf8ac7..ca9cd4ee82 100644
--- a/test/e2e-v2/cases/elasticsearch/elasticsearch-cases.yaml
+++ b/test/e2e-v2/cases/elasticsearch/elasticsearch-cases.yaml
@@ -19,201 +19,201 @@ cases:
   # service cases
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
     expected: expected/service.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_elasticsearch_cluster_health_status --service-name=elasticsearch::cluster-e2e | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_health_status --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_breakers_tripped --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_breakers_tripped --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_cpu_usage_avg --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_cpu_usage_avg --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_jvm_memory_used_avg --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_jvm_memory_used_avg --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_nodes --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_nodes --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_data_nodes --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_data_nodes --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_pending_tasks_total --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_pending_tasks_total --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_open_file_count --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_open_file_count --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_primary_shards_total --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_primary_shards_total --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_shards_total --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_shards_total --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_initializing_shards_total --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_initializing_shards_total --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_delayed_unassigned_shards_total --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_delayed_unassigned_shards_total --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_relocating_shards_total --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_relocating_shards_total --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_cluster_unassigned_shards_total --service-name=elasticsearch::cluster-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_cluster_unassigned_shards_total --service-name=elasticsearch::cluster-e2e
     expected: expected/metrics-has-value.yml
 
   # instance cases
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance ls --service-name=elasticsearch::cluster-e2e
     expected: expected/instance.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_elasticsearch_node_rules --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_rules --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_jvm_memory_heap_used --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_jvm_memory_heap_used --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_jvm_memory_nonheap_used --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_jvm_memory_nonheap_used --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_jvm_memory_heap_max --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_jvm_memory_heap_max --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_elasticsearch_node_jvm_memory_pool_peak_used --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_jvm_memory_pool_peak_used --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_elasticsearch_node_jvm_gc_count --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_jvm_gc_count --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_elasticsearch_node_jvm_gc_time --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_jvm_gc_time --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_process_cpu_percent --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_process_cpu_percent --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_docs --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_docs --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_segment_count --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_segment_count --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_all_disk_free_space --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_all_disk_free_space --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_open_file_count --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_open_file_count --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_search_query_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_search_query_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_search_fetch_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_search_fetch_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_indexing_index_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_indexing_index_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_merges_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_merges_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_refresh_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_refresh_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_flush_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_flush_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_get_exists_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_get_exists_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_get_missing_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_get_missing_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_get_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_get_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_indexing_delete_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_indexing_delete_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_search_scroll_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_search_scroll_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_search_suggest_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_search_suggest_total_req_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_search_query_time_seconds_proc_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_search_query_time_seconds_proc_rate --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_translog_operations --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_translog_operations --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_translog_size --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_translog_size --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_elasticsearch_node_breakers_tripped --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_breakers_tripped --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_elasticsearch_node_breakers_estimated_size --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_breakers_estimated_size --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_docs --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_docs --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_docs_deleted_total --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_docs_deleted_total --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_docs_deleted --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_docs_deleted --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_merges_docs_total --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_merges_docs_total --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_indices_merges_total_size_bytes_total --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_indices_merges_total_size_bytes_total --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_segment_count --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_segment_count --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_segment_memory --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_segment_memory --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_network_send_bytes --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_network_send_bytes --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_node_network_receive_bytes --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_network_receive_bytes --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_elasticsearch_node_disk_usage_percent --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_disk_usage_percent --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_elasticsearch_node_disk_usage --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_node_disk_usage --service-name=elasticsearch::cluster-e2e --instance-name=node-e2e
     expected: expected/metrics-has-value-label.yml
 
   # endpoint cases
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint ls --service-name=elasticsearch::cluster-e2e
     expected: expected/endpoint.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_docs_primary --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_docs_primary --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_deleted_docs_primary --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_deleted_docs_primary --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_store_size_bytes_primary --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_store_size_bytes_primary --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_docs_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_docs_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_store_size_bytes_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_store_size_bytes_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_segment_count_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_segment_count_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_segment_memory_bytes_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_segment_memory_bytes_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_segment_count_primary --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_segment_count_primary --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_segment_memory_bytes_primary --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_segment_memory_bytes_primary --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_merge_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_merge_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_flush_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_flush_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_refresh_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_refresh_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_warmer_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_warmer_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_indexing_delete_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_indexing_delete_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_search_fetch_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_search_fetch_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_search_scroll_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_search_scroll_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_search_suggest_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_search_suggest_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_get_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_get_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_merge_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_merge_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_flush_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_flush_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_refresh_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_refresh_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_warmer_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_warmer_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_indexing_delete_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_indexing_delete_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_search_fetch_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_search_fetch_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_search_query_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_search_query_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_search_scroll_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_search_scroll_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_search_suggest_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_search_suggest_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_indexing_index_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_indexing_index_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_get_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_get_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_merge_stopped_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_merge_stopped_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_merge_throttle_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_merge_throttle_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_indexing_throttle_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_indexing_throttle_time_seconds_total --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_elasticsearch_index_indices_shards_docs --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_shards_docs --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_docs_primary_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_docs_primary_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_indexing_index_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_indexing_index_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_indices_docs_total_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_indices_docs_total_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_stats_search_query_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_stats_search_query_total_req_rate --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_search_fetch_avg_time --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_search_fetch_avg_time --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_search_query_avg_time --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_search_query_avg_time --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_search_suggest_avg_time --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_search_suggest_avg_time --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_elasticsearch_index_search_scroll_avg_time --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_elasticsearch_index_search_scroll_avg_time --service-name=elasticsearch::cluster-e2e --endpoint-name=e2e-index-0
     expected: expected/metrics-has-value.yml
\ No newline at end of file
diff --git a/test/e2e-v2/cases/elasticsearch/expected/metrics-has-value-label.yml b/test/e2e-v2/cases/elasticsearch/expected/metrics-has-value-label.yml
index 0c957c3c77..a94c3c4ba0 100644
--- a/test/e2e-v2/cases/elasticsearch/expected/metrics-has-value-label.yml
+++ b/test/e2e-v2/cases/elasticsearch/expected/metrics-has-value-label.yml
@@ -13,13 +13,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 0 }}
-      isemptyvalue: false
-  {{- end }}
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels:
+        {{- contains .metric.labels }}
+        - key: _
+          value: {{ .value }}
+        {{- end}}
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/elasticsearch/expected/metrics-has-value.yml b/test/e2e-v2/cases/elasticsearch/expected/metrics-has-value.yml
index 4411655352..dc71f56632 100644
--- a/test/e2e-v2/cases/elasticsearch/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/elasticsearch/expected/metrics-has-value.yml
@@ -13,9 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 0 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/gateway/e2e.yaml b/test/e2e-v2/cases/gateway/e2e.yaml
index 0dba2a5dd8..d84f01ca3d 100644
--- a/test/e2e-v2/cases/gateway/e2e.yaml
+++ b/test/e2e-v2/cases/gateway/e2e.yaml
@@ -71,45 +71,45 @@ verify:
     - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql dependency instance --service-id=Z2F0ZXdheTo4MA==.0 --dest-service-name=e2e-service-provider
       expected: expected/dependency-instance.yml
     # service metrics linear
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_sla --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_sla --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_cpm --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_cpm --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_resp_time --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_resp_time --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_apdex --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_apdex --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     # service metrics percentile
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics multiple-linear --name=service_percentile --service-name=e2e-service-provider |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_percentile --service-name=e2e-service-provider
       expected: expected/metrics-has-value-percentile.yml
     # service instance metrics
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_instance_resp_time --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_instance_resp_time --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_instance_cpm --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_instance_cpm --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_instance_sla --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_instance_sla --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     # service endpoint metrics
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     # service endpoint metrics percentile
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics multiple-linear --name=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-provider |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-provider
       expected: expected/metrics-has-value-percentile.yml
     # service relation metrics
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_relation_client_cpm --service-name=e2e-service-consumer --dest-service-id=Z2F0ZXdheTo4MA==.0 |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_relation_client_cpm --service-name=e2e-service-consumer --dest-service-id=Z2F0ZXdheTo4MA==.0
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_relation_server_cpm --service-id=VXNlcg==.0 --dest-service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_relation_server_cpm --service-id=VXNlcg==.0 --dest-service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_relation_client_cpm --service-name=e2e-service-provider --dest-service-id=bG9jYWxob3N0Oi0x.0 |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_relation_client_cpm --service-name=e2e-service-provider --dest-service-id=bG9jYWxob3N0Oi0x.0
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_relation_server_cpm --service-id=Z2F0ZXdheTo4MA==.0 --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_relation_server_cpm --service-id=Z2F0ZXdheTo4MA==.0 --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     # service instance relation metrics gateway:80 is not real then use service-id
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_instance_relation_server_cpm --instance-id=Z2F0ZXdheTo4MA==.0_Z2F0ZXdheTo4MA== --service-id=Z2F0ZXdheTo4MA==.0 --dest-instance-name=provider1 --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_instance_relation_server_cpm --instance-id=Z2F0ZXdheTo4MA==.0_Z2F0ZXdheTo4MA== --service-id=Z2F0ZXdheTo4MA==.0 --dest-instance-name=provider1 --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics linear --name=service_instance_relation_server_cpm --instance-id=Z2F0ZXdheTo4MA==.0_Z2F0ZXdheTo4MA== --service-id=Z2F0ZXdheTo4MA==.0 --dest-instance-name=provider2 --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${ui_host}:${ui_8080}/graphql metrics exec --expression=service_instance_relation_server_cpm --instance-id=Z2F0ZXdheTo4MA==.0_Z2F0ZXdheTo4MA== --service-id=Z2F0ZXdheTo4MA==.0 --dest-instance-name=provider2 --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/gateway/expected/metrics-has-value-percentile.yml b/test/e2e-v2/cases/gateway/expected/metrics-has-value-percentile.yml
index c360120bcc..a94c3c4ba0 100644
--- a/test/e2e-v2/cases/gateway/expected/metrics-has-value-percentile.yml
+++ b/test/e2e-v2/cases/gateway/expected/metrics-has-value-percentile.yml
@@ -13,65 +13,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: 0
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 1
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 2
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 3
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 4
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels:
+        {{- contains .metric.labels }}
+        - key: _
+          value: {{ .value }}
+        {{- end}}
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/gateway/expected/metrics-has-value.yml b/test/e2e-v2/cases/gateway/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/gateway/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/gateway/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/go/e2e.yaml b/test/e2e-v2/cases/go/e2e.yaml
index d17f7ec7ed..06e8621c7d 100644
--- a/test/e2e-v2/cases/go/e2e.yaml
+++ b/test/e2e-v2/cases/go/e2e.yaml
@@ -76,41 +76,41 @@ verify:
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency instance --service-name=go-service --dest-service-name=e2e-service-provider
       expected: expected/dependency-instance-go.yml
     # service metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=go-service |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_sla --service-name=go-service
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=go-service |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_cpm --service-name=go-service
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=go-service |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_resp_time --service-name=go-service
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=go-service |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_apdex --service-name=go-service
       expected: expected/metrics-has-value.yml
     # service instance metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_resp_time --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_resp_time --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_cpm --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_cpm --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_sla --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_sla --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     # service endpoint metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=POST:/correlation --service-name=go-service |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=POST:/correlation --service-name=go-service
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=POST:/correlation --service-name=go-service |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_resp_time --endpoint-name=POST:/correlation --service-name=go-service
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=POST:/correlation --service-name=go-service |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_sla --endpoint-name=POST:/correlation --service-name=go-service
       expected: expected/metrics-has-value.yml
     # service relation metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_client_cpm  --service-name=go-service --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_client_cpm  --service-name=go-service --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_server_cpm  --service-name=go-service --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_server_cpm  --service-name=go-service --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     # service instance relation metrics
     - query: |
-        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_client_cpm --instance-name=$( \
+        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_client_cpm --instance-name=$( \
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance list --service-name=go-service | yq e '.[0].name' - ) \
-           --service-name=go-service --dest-instance-name=provider1 --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+           --service-name=go-service --dest-instance-name=provider1 --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     - query: |
-        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_server_cpm --instance-name=$( \
+        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_server_cpm --instance-name=$( \
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance list --service-name=go-service | yq e '.[0].name' - ) \
-           --service-name=go-service --dest-instance-name=provider1 --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+           --service-name=go-service --dest-instance-name=provider1 --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/go/expected/metrics-has-value.yml b/test/e2e-v2/cases/go/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/go/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/go/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/kafka/meter/expected/metrics-has-value.yml b/test/e2e-v2/cases/kafka/meter/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/kafka/meter/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/kafka/meter/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/kafka/meter/meter-cases.yaml b/test/e2e-v2/cases/kafka/meter/meter-cases.yaml
index ce40b82c1b..05408d0d67 100644
--- a/test/e2e-v2/cases/kafka/meter/meter-cases.yaml
+++ b/test/e2e-v2/cases/kafka/meter/meter-cases.yaml
@@ -21,9 +21,9 @@
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance list --service-name=e2e-service-provider
       expected: expected/service-instance.yml
     # service instance metrics linear
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_jvm_memory_max --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_jvm_memory_max --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_jvm_threads_live --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_jvm_threads_live --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_process_files_max --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_process_files_max --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
\ No newline at end of file
diff --git a/test/e2e-v2/cases/log/expected/metrics-has-value.yml b/test/e2e-v2/cases/log/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/log/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/log/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/log/log-cases.yaml b/test/e2e-v2/cases/log/log-cases.yaml
index 85bf692b59..9ab73bf32d 100644
--- a/test/e2e-v2/cases/log/log-cases.yaml
+++ b/test/e2e-v2/cases/log/log-cases.yaml
@@ -17,5 +17,5 @@
     - includes:
         - log-cases-base.yaml
     # metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=log_count_info --instance-name=provider1 --service-name=e2e-service-provider  |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=log_count_info --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/lua/e2e.yaml b/test/e2e-v2/cases/lua/e2e.yaml
index 540aa195b7..8ccab0d320 100644
--- a/test/e2e-v2/cases/lua/e2e.yaml
+++ b/test/e2e-v2/cases/lua/e2e.yaml
@@ -68,39 +68,39 @@ verify:
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency instance --service-name=e2e-service-entry-provider --dest-service-name=User_Service_Name
       expected: expected/dependency-instance.yml
     # service metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_sla --service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_cpm --service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_resp_time --service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_apdex --service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
     # service instance metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_resp_time --instance-name=User_Service_Instance_Name --service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_resp_time --instance-name=User_Service_Instance_Name --service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_cpm --instance-name=User_Service_Instance_Name --service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_cpm --instance-name=User_Service_Instance_Name --service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_sla --instance-name=User_Service_Instance_Name --service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_sla --instance-name=User_Service_Instance_Name --service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
     # service endpoint metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=/nginx/info --service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=/nginx/info --service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=/nginx/info --service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_resp_time --endpoint-name=/nginx/info --service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=/nginx/info --service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_sla --endpoint-name=/nginx/info --service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
     # service relation metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_client_cpm  --service-name=e2e-service-entry-provider --dest-service-name=User_Service_Name|yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_client_cpm  --service-name=e2e-service-entry-provider --dest-service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_server_cpm  --service-name=e2e-service-entry-provider --dest-service-name=User_Service_Name|yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_server_cpm  --service-name=e2e-service-entry-provider --dest-service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_client_cpm  --service-name=User_Service_Name --dest-service-name=e2e-service-end-provider|yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_client_cpm  --service-name=User_Service_Name --dest-service-name=e2e-service-end-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_server_cpm  --service-name=User_Service_Name --dest-service-name=e2e-service-end-provider|yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_server_cpm  --service-name=User_Service_Name --dest-service-name=e2e-service-end-provider
       expected: expected/metrics-has-value.yml
     # service instance relation metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_client_cpm  --instance-name=provider1  --service-name=e2e-service-entry-provider --dest-instance-name=User_Service_Instance_Name --dest-service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_client_cpm  --instance-name=provider1  --service-name=e2e-service-entry-provider --dest-instance-name=User_Service_Instance_Name --dest-service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_server_cpm  --instance-name=provider1  --service-name=e2e-service-entry-provider --dest-instance-name=User_Service_Instance_Name --dest-service-name=User_Service_Name |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_server_cpm  --instance-name=provider1  --service-name=e2e-service-entry-provider --dest-instance-name=User_Service_Instance_Name --dest-service-name=User_Service_Name
       expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/lua/expected/metrics-has-value.yml b/test/e2e-v2/cases/lua/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/lua/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/lua/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/mariadb/expected/metrics-has-value.yml b/test/e2e-v2/cases/mariadb/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/mariadb/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/mariadb/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/mariadb/mariadb-cases.yaml b/test/e2e-v2/cases/mariadb/mariadb-cases.yaml
index 8376ee9841..28bb2f4bf2 100644
--- a/test/e2e-v2/cases/mariadb/mariadb-cases.yaml
+++ b/test/e2e-v2/cases/mariadb/mariadb-cases.yaml
@@ -20,63 +20,63 @@ cases:
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
     expected:  expected/service.yml
   # service metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_select_rate --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_commands_select_rate --service-name=mysql::db
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_insert_rate --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_commands_insert_rate --service-name=mysql::db
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_update_rate --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_commands_update_rate --service-name=mysql::db
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_delete_rate --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_commands_delete_rate --service-name=mysql::db
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_qps --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_qps --service-name=mysql::db
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_tps --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_tps --service-name=mysql::db
     expected: expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_connected --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_threads_connected --service-name=mysql::db
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_created --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_threads_created --service-name=mysql::db
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_running --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_threads_running --service-name=mysql::db
     expected: expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_connects_aborted --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_connects_aborted --service-name=mysql::db
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_connects_available --service-name=mysql::db |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_connects_available --service-name=mysql::db
     expected: expected/metrics-has-value.yml
   # instance metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_uptime --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_uptime --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_innodb_buffer_pool_size --service-name=mysql::db  --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_innodb_buffer_pool_size --service-name=mysql::db  --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_max_connections --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_max_connections --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_thread_cache_size --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_thread_cache_size --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_select_rate --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_commands_select_rate --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_insert_rate --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_commands_insert_rate --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_update_rate --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_commands_update_rate --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_delete_rate --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_commands_delete_rate --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_qps --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_qps --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_tps --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_tps --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_threads_connected --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_threads_connected --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_threads_created --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_threads_created --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_threads_running --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_threads_running --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_connects_aborted --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_connects_aborted --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_connects_available --service-name=mysql::db --instance-name=mariadb-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_connects_available --service-name=mysql::db --instance-name=mariadb-service:9104
     expected:  expected/metrics-has-value.yml
   # slow sql
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql records list --name=top_n_database_statement --service-name=mysql::db |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
diff --git a/test/e2e-v2/cases/mariadb/mariadb-slowsql/docker-compose.yaml b/test/e2e-v2/cases/mariadb/mariadb-slowsql/docker-compose.yaml
index 822577e120..e990cec192 100644
--- a/test/e2e-v2/cases/mariadb/mariadb-slowsql/docker-compose.yaml
+++ b/test/e2e-v2/cases/mariadb/mariadb-slowsql/docker-compose.yaml
@@ -45,9 +45,6 @@ services:
 
   mariadb-load:
     image: mysql:8.0.13
-    depends_on:
-      oap:
-        condition: service_healthy
     networks:
       - e2e
     entrypoint: bash
@@ -57,14 +54,13 @@ services:
       - -c
       - "mysql -h mariadb -uroot -ppassword < /docker/mock.sql"
     depends_on:
+      oap:
+        condition: service_healthy
       mariadb:
         condition: service_healthy
       
   mariadb-load_2:
     image: mysql:8.0.13
-    depends_on:
-      oap:
-        condition: service_healthy
     networks:
       - e2e
     entrypoint: bash
@@ -72,6 +68,8 @@ services:
       - -c
       - "mysql -h mariadb -uroot -pwrong-password"
     depends_on:
+      oap:
+        condition: service_healthy
       mariadb:
         condition: service_healthy
 
diff --git a/test/e2e-v2/cases/meter/expected/metrics-has-value.yml b/test/e2e-v2/cases/meter/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/meter/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/meter/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/meter/meter-cases.yaml b/test/e2e-v2/cases/meter/meter-cases.yaml
index db54712f1f..c5c5bfbe47 100644
--- a/test/e2e-v2/cases/meter/meter-cases.yaml
+++ b/test/e2e-v2/cases/meter/meter-cases.yaml
@@ -21,16 +21,16 @@
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance list --service-name=e2e-service-provider
       expected: expected/service-instance.yml
     # service instance metrics linear
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_jvm_memory_max --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_jvm_memory_max --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_jvm_threads_live --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_jvm_threads_live --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_process_files_max --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_process_files_max --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     - query: |
         curl -s -XPOST http://${sender_host}:${sender_9093}/sendBatchMetrics > /dev/null;
         sleep 10;
-        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=batch_test --instance-name=test-instance --service-name=test-service |yq e 'to_entries' -
+        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=batch_test --instance-name=test-instance --service-name=test-service
       expected: expected/metrics-has-value.yml
     # virtual cache
     - query: |
@@ -47,5 +47,5 @@
       expected: expected/virtual_cache_has_topN_records.yml
       # virtual database
     - query: |
-        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=database_access_resp_time  --service-id=bG9jYWxob3N0Oi0x.0  | yq e 'to_entries' -
+        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=database_access_resp_time  --service-id=bG9jYWxob3N0Oi0x.0
       expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/mongodb/expected/metrics-has-value-label.yml b/test/e2e-v2/cases/mongodb/expected/metrics-has-value-label.yml
index 0c957c3c77..a94c3c4ba0 100644
--- a/test/e2e-v2/cases/mongodb/expected/metrics-has-value-label.yml
+++ b/test/e2e-v2/cases/mongodb/expected/metrics-has-value-label.yml
@@ -13,13 +13,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 0 }}
-      isemptyvalue: false
-  {{- end }}
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels:
+        {{- contains .metric.labels }}
+        - key: _
+          value: {{ .value }}
+        {{- end}}
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/mongodb/expected/metrics-has-value.yml b/test/e2e-v2/cases/mongodb/expected/metrics-has-value.yml
index 4411655352..dc71f56632 100644
--- a/test/e2e-v2/cases/mongodb/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/mongodb/expected/metrics-has-value.yml
@@ -13,9 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 0 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/mongodb/mongodb-cases.yaml b/test/e2e-v2/cases/mongodb/mongodb-cases.yaml
index 7868154d2e..b6178214b4 100644
--- a/test/e2e-v2/cases/mongodb/mongodb-cases.yaml
+++ b/test/e2e-v2/cases/mongodb/mongodb-cases.yaml
@@ -19,101 +19,101 @@ cases:
   # service cases
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
     expected: expected/service.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_uptime --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_uptime --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_data_size --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_data_size --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_collection_count --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_collection_count --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_object_count --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_object_count --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_document_avg_qps --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_document_avg_qps --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_operation_avg_qps --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_operation_avg_qps --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_connections --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_connections --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_cursor_avg --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_cursor_avg --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_repl_lag --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_repl_lag --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_db_data_size --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_db_data_size --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_db_index_size --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_db_index_size --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_db_collection_count --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_db_collection_count --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_cluster_db_index_count --service-name=mongodb::replset | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_cluster_db_index_count --service-name=mongodb::replset
     expected: expected/metrics-has-value-label.yml
 
   # instance cases
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance ls --service-name=mongodb::replset
     expected: expected/instance.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_uptime --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_uptime --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_qps --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_qps --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_latency --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_latency --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_memory_usage --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_memory_usage --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_node_version --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_version --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_node_rs_state --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_rs_state --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_cpu_total_percentage --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_cpu_total_percentage --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_network_bytes_in --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_network_bytes_in --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_network_bytes_out --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_network_bytes_out --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_memory_free_kb --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_memory_free_kb --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_swap_memory_free_kb --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_swap_memory_free_kb --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_fs_used_size --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_fs_used_size --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_fs_total_size --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_fs_total_size --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_connections --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_connections --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_active_total_num --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_active_total_num --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_active_reader_num --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_active_reader_num --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_active_writer_num --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_active_writer_num --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_transactions_active --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_transactions_active --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_transactions_inactive --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_transactions_inactive --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_node_document_qps --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_document_qps --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_node_operation_qps --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_operation_qps --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_node_repl_operation_qps --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_repl_operation_qps --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_node_operation_latency --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_operation_latency --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_node_cursor --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_cursor --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_mem_virtual --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_mem_virtual --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_mem_resident --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_mem_resident --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_node_asserts --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_asserts --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_repl_buffer_count --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_repl_buffer_count --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_repl_buffer_size --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_repl_buffer_size --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_repl_buffer_size_max --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_repl_buffer_size_max --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_mongodb_node_queued_operation --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_queued_operation --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_write_wait_num --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_write_wait_num --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_write_wait_timeout_num --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_write_wait_timeout_num --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mongodb_node_write_wait_time --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216 | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mongodb_node_write_wait_time --service-name=mongodb::replset --instance-name=mongodb-exporter-1:9216
     expected: expected/metrics-has-value.yml
\ No newline at end of file
diff --git a/test/e2e-v2/cases/mysql/expected/metrics-has-value.yml b/test/e2e-v2/cases/mysql/expected/metrics-has-value.yml
index 04b077dd98..1bd1391f66 100644
--- a/test/e2e-v2/cases/mysql/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/mysql/expected/metrics-has-value.yml
@@ -13,13 +13,34 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/mysql/mysql-cases.yaml b/test/e2e-v2/cases/mysql/mysql-cases.yaml
index c327890c5e..2a6fcb17b4 100644
--- a/test/e2e-v2/cases/mysql/mysql-cases.yaml
+++ b/test/e2e-v2/cases/mysql/mysql-cases.yaml
@@ -20,63 +20,63 @@ cases:
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
     expected:  expected/service.yml
   # service metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_select_rate --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_commands_select_rate --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_insert_rate --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_commands_insert_rate --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_update_rate --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_commands_update_rate --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_commands_delete_rate --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_commands_delete_rate --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_qps --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_qps --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_tps --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_tps --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_connected --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_threads_connected --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_created --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_threads_created --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_threads_running --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_threads_running --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_connects_aborted --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_connects_aborted --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_connects_available --service-name=mysql::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_connects_available --service-name=mysql::root[root]
     expected: expected/metrics-has-value.yml
   # instance metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_uptime --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_uptime --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_innodb_buffer_pool_size --service-name=mysql::root[root]  --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_innodb_buffer_pool_size --service-name=mysql::root[root]  --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_max_connections --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_max_connections --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_thread_cache_size --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_thread_cache_size --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_select_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_commands_select_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_insert_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_commands_insert_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_update_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_commands_update_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_commands_delete_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_commands_delete_rate --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_qps --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_qps --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_tps --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_tps --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_threads_connected --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_threads_connected --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_threads_created --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_threads_created --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_threads_running --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_threads_running --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_connects_aborted --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_connects_aborted --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_mysql_instance_connects_available --service-name=mysql::root[root] --instance-name=mysql-service:9104 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_mysql_instance_connects_available --service-name=mysql::root[root] --instance-name=mysql-service:9104
     expected:  expected/metrics-has-value.yml
   # slow sql
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql records list --name=top_n_database_statement --service-name=mysql::root[root] |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
diff --git a/test/e2e-v2/cases/nodejs/e2e.yaml b/test/e2e-v2/cases/nodejs/e2e.yaml
index 031d839918..aa71d7c2e4 100644
--- a/test/e2e-v2/cases/nodejs/e2e.yaml
+++ b/test/e2e-v2/cases/nodejs/e2e.yaml
@@ -73,39 +73,39 @@ verify:
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency instance --service-name=consumer --dest-service-name=e2e-service-consumer
       expected: expected/dependency-instance.yml
     # service metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_sla --service-name=consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_cpm --service-name=consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_resp_time --service-name=consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_apdex --service-name=consumer
       expected: expected/metrics-has-value.yml
     # service instance metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_resp_time --instance-name=provider-instance --service-name=provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_resp_time --instance-name=provider-instance --service-name=provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_cpm --instance-name=provider-instance --service-name=provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_cpm --instance-name=provider-instance --service-name=provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_sla --instance-name=provider-instance --service-name=provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_sla --instance-name=provider-instance --service-name=provider
       expected: expected/metrics-has-value.yml
     # service endpoint metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=POST:/users --service-name=consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=POST:/users --service-name=consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=POST:/users --service-name=consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_resp_time --endpoint-name=POST:/users --service-name=consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=POST:/users --service-name=consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_sla --endpoint-name=POST:/users --service-name=consumer
       expected: expected/metrics-has-value.yml
     # service relation metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_client_cpm  --service-name=consumer --dest-service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_client_cpm  --service-name=consumer --dest-service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_server_cpm  --service-name=consumer --dest-service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_server_cpm  --service-name=consumer --dest-service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_client_cpm  --service-name=e2e-service-consumer --dest-service-name=provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_client_cpm  --service-name=e2e-service-consumer --dest-service-name=provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_server_cpm  --service-name=e2e-service-consumer --dest-service-name=provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_server_cpm  --service-name=e2e-service-consumer --dest-service-name=provider
       expected: expected/metrics-has-value.yml
     # service instance relation metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_client_cpm  --instance-name=consumer-instance  --service-name=consumer --dest-instance-name=consumer1 --dest-service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_client_cpm  --instance-name=consumer-instance  --service-name=consumer --dest-instance-name=consumer1 --dest-service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_server_cpm  --instance-name=consumer-instance  --service-name=consumer --dest-instance-name=consumer1 --dest-service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_server_cpm  --instance-name=consumer-instance  --service-name=consumer --dest-instance-name=consumer1 --dest-service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/nodejs/expected/metrics-has-value.yml b/test/e2e-v2/cases/nodejs/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/nodejs/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/nodejs/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/php/e2e.yaml b/test/e2e-v2/cases/php/e2e.yaml
index 046daa028f..124f9ac206 100644
--- a/test/e2e-v2/cases/php/e2e.yaml
+++ b/test/e2e-v2/cases/php/e2e.yaml
@@ -80,41 +80,41 @@ verify:
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency instance --service-name=php --dest-service-name=e2e-service-provider
       expected: expected/dependency-instance.yml
     # service metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=php |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_sla --service-name=php
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=php |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_cpm --service-name=php
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=php |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_resp_time --service-name=php
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=php |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_apdex --service-name=php
       expected: expected/metrics-has-value.yml
     # service instance metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_resp_time --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_resp_time --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_cpm --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_cpm --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_sla --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_sla --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     # service endpoint metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=/php/info --service-name=php |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=/php/info --service-name=php
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=/php/info --service-name=php |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_resp_time --endpoint-name=/php/info --service-name=php
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=/php/info --service-name=php |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_sla --endpoint-name=/php/info --service-name=php
       expected: expected/metrics-has-value.yml
     # service relation metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_client_cpm  --service-name=php --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_client_cpm  --service-name=php --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_server_cpm  --service-name=php --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_server_cpm  --service-name=php --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     # service instance relation metrics
     - query: |
-        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_client_cpm --instance-name=$( \
+        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_client_cpm --instance-name=$( \
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance list --service-name=php | yq e '.[0].name' - ) \
-           --service-name=php --dest-instance-name=provider1 --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+           --service-name=php --dest-instance-name=provider1 --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     - query: |
-        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_server_cpm --instance-name=$( \
+        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_server_cpm --instance-name=$( \
           swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance list --service-name=php | yq e '.[0].name' - ) \
-           --service-name=php --dest-instance-name=provider1 --dest-service-name=e2e-service-provider |yq e 'to_entries' -
+           --service-name=php --dest-instance-name=provider1 --dest-service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/php/expected/metrics-has-value.yml b/test/e2e-v2/cases/php/expected/metrics-has-value.yml
index 474e0ef1e4..dc71f56632 100644
--- a/test/e2e-v2/cases/php/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/php/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/postgresql/expected/metrics-has-value-label.yml b/test/e2e-v2/cases/postgresql/expected/metrics-has-value-label.yml
index fb38843650..a94c3c4ba0 100644
--- a/test/e2e-v2/cases/postgresql/expected/metrics-has-value-label.yml
+++ b/test/e2e-v2/cases/postgresql/expected/metrics-has-value-label.yml
@@ -13,17 +13,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels:
+        {{- contains .metric.labels }}
+        - key: _
+          value: {{ .value }}
+        {{- end}}
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/postgresql/expected/metrics-has-value.yml b/test/e2e-v2/cases/postgresql/expected/metrics-has-value.yml
index ea1c6bbf3a..dc71f56632 100644
--- a/test/e2e-v2/cases/postgresql/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/postgresql/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }} 
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/postgresql/postgresql-cases.yaml b/test/e2e-v2/cases/postgresql/postgresql-cases.yaml
index 7d9de5e337..6ec2d9b736 100644
--- a/test/e2e-v2/cases/postgresql/postgresql-cases.yaml
+++ b/test/e2e-v2/cases/postgresql/postgresql-cases.yaml
@@ -20,57 +20,57 @@ cases:
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
     expected:  expected/service.yml
   # service metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_cache_hit_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_cache_hit_rate --service-name=postgresql::postgres:5432
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_fetched_rows_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_fetched_rows_rate --service-name=postgresql::postgres:5432
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_inserted_rows_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_inserted_rows_rate --service-name=postgresql::postgres:5432
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_updated_rows_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_updated_rows_rate --service-name=postgresql::postgres:5432
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_returned_rows_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_returned_rows_rate --service-name=postgresql::postgres:5432
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_deleted_rows_rate --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_deleted_rows_rate --service-name=postgresql::postgres:5432
     expected: expected/metrics-has-value-label.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_active_sessions --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_active_sessions --service-name=postgresql::postgres:5432
     expected: expected/metrics-has-value-label.yml
   # instance metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_shared_buffers --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_shared_buffers --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_effective_cache --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_effective_cache --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_maintenance_work_mem --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_maintenance_work_mem --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_work_mem --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_work_mem --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected:  expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_seq_page_cost --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_seq_page_cost --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_random_page_cost --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_random_page_cost --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_max_wal_size --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_max_wal_size --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_max_parallel_workers --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_max_parallel_workers --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected:  expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_pg_instance_max_worker_processes --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_max_worker_processes --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected:  expected/metrics-has-value.yml
 
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_cache_hit_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_cache_hit_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_fetched_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_fetched_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_inserted_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_inserted_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_updated_rows_rate  --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_updated_rows_rate  --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_returned_rows_rate  --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_returned_rows_rate  --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected: expected/metrics-has-value-label.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_deleted_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_deleted_rows_rate --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected: expected/metrics-has-value-label.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_pg_instance_active_sessions --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_pg_instance_active_sessions --service-name=postgresql::postgres:5432 --instance-name=postgres-exporter:9187
     expected: expected/metrics-has-value-label.yml
   # slow sql
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql records list --name=top_n_database_statement --service-name=postgresql::postgres:5432 |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
diff --git a/test/e2e-v2/cases/profiling/ebpf/continuous/expected/metrics-has-value.yml b/test/e2e-v2/cases/profiling/ebpf/continuous/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/profiling/ebpf/continuous/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/profiling/ebpf/continuous/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/profiling/ebpf/continuous/profiling-cases.yaml b/test/e2e-v2/cases/profiling/ebpf/continuous/profiling-cases.yaml
index dd6c03f203..dcf689acfb 100644
--- a/test/e2e-v2/cases/profiling/ebpf/continuous/profiling-cases.yaml
+++ b/test/e2e-v2/cases/profiling/ebpf/continuous/profiling-cases.yaml
@@ -33,8 +33,8 @@ cases:
 
   # check profiling metrics
   - query: |
-      swctl --base-url=http://${oap_host}:${oap_12800}/graphql --display yaml metrics linear \
-        --service-name sqrt --instance-name test-instance --process-name sqrt --name continuous_profiling_process_cpu |yq e 'to_entries' -
+      swctl --base-url=http://${oap_host}:${oap_12800}/graphql --display yaml metrics exec \
+        --service-name sqrt --instance-name test-instance --process-name sqrt --expression=continuous_profiling_process_cpu
     expected: expected/metrics-has-value.yml
 
   # check triggered profiling task
diff --git a/test/e2e-v2/cases/python/e2e.yaml b/test/e2e-v2/cases/python/e2e.yaml
index 55209cdd93..7b217c5cf6 100644
--- a/test/e2e-v2/cases/python/e2e.yaml
+++ b/test/e2e-v2/cases/python/e2e.yaml
@@ -93,51 +93,51 @@ verify:
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency instance --service-name=consumer-py --dest-service-name=provider-py-kafka
       expected: expected/dependency-instance-provider-py-kafka.yml
     # service metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=consumer-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_sla --service-name=consumer-py
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=consumer-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_cpm --service-name=consumer-py
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=consumer-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_resp_time --service-name=consumer-py
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=consumer-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_apdex --service-name=consumer-py
       expected: expected/metrics-has-value.yml
     # service instance metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_resp_time --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_resp_time --instance-name=consumer1 --service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_cpm --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_cpm --instance-name=consumer1 --service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_sla --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_sla --instance-name=consumer1 --service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
     # service endpoint metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=/users --service-name=provider-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=/users --service-name=provider-py
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=/users --service-name=provider-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_resp_time --endpoint-name=/users --service-name=provider-py
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=/users --service-name=provider-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_sla --endpoint-name=/users --service-name=provider-py
       expected: expected/metrics-has-value.yml
     # service relation metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_client_cpm  --service-name=consumer-py --dest-service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_client_cpm  --service-name=consumer-py --dest-service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_server_cpm  --service-name=consumer-py --dest-service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_server_cpm  --service-name=consumer-py --dest-service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_client_cpm  --service-name=consumer-py --dest-service-name=provider-py-kafka |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_client_cpm  --service-name=consumer-py --dest-service-name=provider-py-kafka
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_server_cpm  --service-name=consumer-py --dest-service-name=provider-py-kafka |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_server_cpm  --service-name=consumer-py --dest-service-name=provider-py-kafka
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_client_cpm  --service-name=e2e-service-consumer --dest-service-name=provider-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_client_cpm  --service-name=e2e-service-consumer --dest-service-name=provider-py
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_relation_server_cpm  --service-name=e2e-service-consumer --dest-service-name=provider-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_relation_server_cpm  --service-name=e2e-service-consumer --dest-service-name=provider-py
       expected: expected/metrics-has-value.yml
     # service instance relation metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_client_cpm  --instance-name=consumer-py-instance  --service-name=consumer-py --dest-instance-name=consumer1 --dest-service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_client_cpm  --instance-name=consumer-py-instance  --service-name=consumer-py --dest-instance-name=consumer1 --dest-service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_server_cpm  --instance-name=consumer-py-instance  --service-name=consumer-py --dest-instance-name=consumer1 --dest-service-name=e2e-service-consumer |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_server_cpm  --instance-name=consumer-py-instance  --service-name=consumer-py --dest-instance-name=consumer1 --dest-service-name=e2e-service-consumer
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_client_cpm  --instance-name=consumer-py-instance  --service-name=consumer-py --dest-instance-name=provider-py-kafka-instance --dest-service-name=provider-py-kafka |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_client_cpm  --instance-name=consumer-py-instance  --service-name=consumer-py --dest-instance-name=provider-py-kafka-instance --dest-service-name=provider-py-kafka
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_server_cpm  --instance-name=consumer-py-instance  --service-name=consumer-py --dest-instance-name=provider-py-kafka-instance --dest-service-name=provider-py-kafka |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_server_cpm  --instance-name=consumer-py-instance  --service-name=consumer-py --dest-instance-name=provider-py-kafka-instance --dest-service-name=provider-py-kafka
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_client_cpm  --instance-name=consumer1 --service-name=e2e-service-consumer --dest-instance-name=provider-py-instance --dest-service-name=provider-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_client_cpm  --instance-name=consumer1 --service-name=e2e-service-consumer --dest-instance-name=provider-py-instance --dest-service-name=provider-py
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_relation_server_cpm  --instance-name=consumer1 --service-name=e2e-service-consumer --dest-instance-name=provider-py-instance --dest-service-name=provider-py |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_relation_server_cpm  --instance-name=consumer1 --service-name=e2e-service-consumer --dest-instance-name=provider-py-instance --dest-service-name=provider-py
       expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/python/expected/metrics-has-value.yml b/test/e2e-v2/cases/python/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/python/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/python/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/redis/expected/metrics-has-value-label.yml b/test/e2e-v2/cases/redis/expected/metrics-has-value-label.yml
index fb38843650..a94c3c4ba0 100644
--- a/test/e2e-v2/cases/redis/expected/metrics-has-value-label.yml
+++ b/test/e2e-v2/cases/redis/expected/metrics-has-value-label.yml
@@ -13,17 +13,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels:
+        {{- contains .metric.labels }}
+        - key: _
+          value: {{ .value }}
+        {{- end}}
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/redis/expected/metrics-has-value.yml b/test/e2e-v2/cases/redis/expected/metrics-has-value.yml
index baeae56d1c..dc71f56632 100644
--- a/test/e2e-v2/cases/redis/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/redis/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-  {{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-  {{- end }}
\ No newline at end of file
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/redis/redis-cases.yaml b/test/e2e-v2/cases/redis/redis-cases.yaml
index 62f42a0a46..da75ac9386 100644
--- a/test/e2e-v2/cases/redis/redis-cases.yaml
+++ b/test/e2e-v2/cases/redis/redis-cases.yaml
@@ -20,47 +20,47 @@ cases:
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
     expected:  expected/service.yml
   # service metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_uptime --service-name=redis::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_uptime --service-name=redis::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_connected_clients --service-name=redis::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_connected_clients --service-name=redis::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_memory_usage --service-name=redis::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_memory_usage --service-name=redis::root[root]
     expected: expected/metrics-has-value.yml
 
 
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_hit_rate --service-name=redis::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_hit_rate --service-name=redis::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_net_input_bytes_total --service-name=redis::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_net_input_bytes_total --service-name=redis::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_net_output_bytes_total --service-name=redis::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_net_output_bytes_total --service-name=redis::root[root]
     expected: expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_db_keys --service-name=redis::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_db_keys --service-name=redis::root[root]
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_expired_keys_total --service-name=redis::root[root] |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_expired_keys_total --service-name=redis::root[root]
     expected: expected/metrics-has-value.yml
 
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_instance_uptime --service-name=redis::root[root] --instance-name=redis_exporter_1:9121 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_instance_uptime --service-name=redis::root[root] --instance-name=redis_exporter_1:9121
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_instance_connected_clients --service-name=redis::root[root] --instance-name=redis_exporter_1:9121 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_instance_connected_clients --service-name=redis::root[root] --instance-name=redis_exporter_1:9121
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_instance_memory_usage --service-name=redis::root[root] --instance-name=redis_exporter_1:9121 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_instance_memory_usage --service-name=redis::root[root] --instance-name=redis_exporter_1:9121
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_instance_memory_max_bytes --service-name=redis::root[root] --instance-name=redis_exporter_1:9121 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_instance_memory_max_bytes --service-name=redis::root[root] --instance-name=redis_exporter_1:9121
     expected: expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_instance_hit_rate --service-name=redis::root[root] --instance-name=redis_exporter_1:9121 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_instance_hit_rate --service-name=redis::root[root] --instance-name=redis_exporter_1:9121
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_instance_net_input_bytes_total --service-name=redis::root[root] --instance-name=redis_exporter_1:9121 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_instance_net_input_bytes_total --service-name=redis::root[root] --instance-name=redis_exporter_1:9121
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_instance_net_output_bytes_total --service-name=redis::root[root] --instance-name=redis_exporter_1:9121 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_instance_net_output_bytes_total --service-name=redis::root[root] --instance-name=redis_exporter_1:9121
     expected: expected/metrics-has-value.yml
 
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_instance_db_keys --service-name=redis::root[root] --instance-name=redis_exporter_1:9121 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_instance_db_keys --service-name=redis::root[root] --instance-name=redis_exporter_1:9121
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_redis_instance_expired_keys_total --service-name=redis::root[root] --instance-name=redis_exporter_1:9121 |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_redis_instance_expired_keys_total --service-name=redis::root[root] --instance-name=redis_exporter_1:9121
     expected: expected/metrics-has-value.yml
 
     # slow sql
diff --git a/test/e2e-v2/cases/satellite/native-protocols/e2e.yaml b/test/e2e-v2/cases/satellite/native-protocols/e2e.yaml
index 9d99188180..3eee4bcd32 100644
--- a/test/e2e-v2/cases/satellite/native-protocols/e2e.yaml
+++ b/test/e2e-v2/cases/satellite/native-protocols/e2e.yaml
@@ -46,13 +46,13 @@ verify:
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service ls
       expected: expected/service.yml
     # basic check: service metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name service_sla --service-name=e2e-service-provider | yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_sla --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     # basic check: service endpoint
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql endpoint list --keyword=info --service-name=e2e-service-provider
       expected: expected/service-endpoint.yml
     # basic check: service endpoint metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name endpoint_cpm --endpoint-name=POST:/info --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=POST:/info --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
     # basic check: dependency service
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql dependency service --service-name="e2e-service-provider"
@@ -63,7 +63,7 @@ verify:
       expected: expected/service-instance.yml
 
     # native jvm: service instance jvm metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name instance_jvm_thread_live_count --instance-name=provider1 --service-name=e2e-service-provider | yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_live_count --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
 
     # native tracing: trace segment list
@@ -78,7 +78,7 @@ verify:
       expected: expected/trace-info-detail.yml
 
     # native meter: instance meter
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name meter_jvm_memory_used --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_jvm_memory_used --instance-name=provider1 --service-name=e2e-service-provider
       expected: expected/metrics-has-value.yml
 
     # native event: event list
diff --git a/test/e2e-v2/cases/satellite/native-protocols/expected/metrics-has-value.yml b/test/e2e-v2/cases/satellite/native-protocols/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/satellite/native-protocols/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/satellite/native-protocols/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/simple/expected/metrics-has-value-percentile.yml b/test/e2e-v2/cases/simple/expected/metrics-has-value-percentile.yml
index c360120bcc..a94c3c4ba0 100644
--- a/test/e2e-v2/cases/simple/expected/metrics-has-value-percentile.yml
+++ b/test/e2e-v2/cases/simple/expected/metrics-has-value-percentile.yml
@@ -13,65 +13,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: 0
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 1
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 2
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 3
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 4
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels:
+        {{- contains .metric.labels }}
+        - key: _
+          value: {{ .value }}
+        {{- end}}
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/simple/expected/metrics-has-value.yml b/test/e2e-v2/cases/simple/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/simple/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/simple/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/simple/simple-cases.yaml b/test/e2e-v2/cases/simple/simple-cases.yaml
index 612d845552..a256a9b5e6 100644
--- a/test/e2e-v2/cases/simple/simple-cases.yaml
+++ b/test/e2e-v2/cases/simple/simple-cases.yaml
@@ -54,81 +54,81 @@ cases:
       )
     expected: expected/trace-users-detail.yml
   # service metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_sla --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_cpm --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_resp_time --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_apdex --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_sla --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_cpm --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_resp_time --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_apdex --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
   # service instance metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_resp_time --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_resp_time --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_cpm --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_cpm --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_sla --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_sla --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
   # service instance JVM metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_heap --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap_max --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_heap_max --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_noheap --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_noheap --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_live_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_live_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_daemon_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_daemon_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_peak_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_peak_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_runnable_state_thread_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_runnable_state_thread_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_loaded_class_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_class_loaded_class_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_total_loaded_class_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_class_total_loaded_class_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_heap --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap_max --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_heap_max --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_noheap --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_noheap --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_live_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_live_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_daemon_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_daemon_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_peak_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_peak_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_runnable_state_thread_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_runnable_state_thread_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_loaded_class_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_class_loaded_class_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_total_loaded_class_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_class_total_loaded_class_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
   # service endpoint metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-provider | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-provider | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-provider | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-consumer | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-consumer | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-consumer | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
   # service endpoint metrics percentile
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-consumer |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-consumer
     expected: expected/metrics-has-value-percentile.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-consumer |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-consumer
     expected: expected/metrics-has-value-percentile.yml
diff --git a/test/e2e-v2/cases/so11y/expected/metrics-has-value-label.yml b/test/e2e-v2/cases/so11y/expected/metrics-has-value-label.yml
index fb38843650..36b22485e9 100644
--- a/test/e2e-v2/cases/so11y/expected/metrics-has-value-label.yml
+++ b/test/e2e-v2/cases/so11y/expected/metrics-has-value-label.yml
@@ -13,17 +13,21 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels:
+        - key: _
+          value: L1 aggregation
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/so11y/expected/metrics-has-value.yml b/test/e2e-v2/cases/so11y/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/so11y/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/so11y/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/so11y/satellite-cases.yaml b/test/e2e-v2/cases/so11y/satellite-cases.yaml
index bbf403e51e..c8dd535825 100644
--- a/test/e2e-v2/cases/so11y/satellite-cases.yaml
+++ b/test/e2e-v2/cases/so11y/satellite-cases.yaml
@@ -18,7 +18,7 @@
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql service layer SO11Y_SATELLITE
       expected: expected/satellite-service.yml
     # service metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=satellite_service_server_cpu_utilization --service-name=satellite-service |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=satellite_service_server_cpu_utilization --service-name=satellite-service
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=satellite_service_grpc_connect_count --service-name=satellite-service |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=satellite_service_grpc_connect_count --service-name=satellite-service
       expected: expected/metrics-has-value.yml
diff --git a/test/e2e-v2/cases/so11y/so11y-cases.yaml b/test/e2e-v2/cases/so11y/so11y-cases.yaml
index 2ec6b1157b..abc96c50d1 100644
--- a/test/e2e-v2/cases/so11y/so11y-cases.yaml
+++ b/test/e2e-v2/cases/so11y/so11y-cases.yaml
@@ -24,24 +24,24 @@
     - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql instance list --service-name=oap-server
       expected: expected/service-instance.yml
     # service instance metrics
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_oap_instance_cpu_percentage --instance-name=http://localhost:1234 --service-name=oap-server |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_oap_instance_cpu_percentage --instance-name=http://localhost:1234 --service-name=oap-server
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name meter_oap_instance_jvm_memory_bytes_used --instance-name=http://localhost:1234 --service-name=oap-server |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_oap_instance_jvm_memory_bytes_used --instance-name=http://localhost:1234 --service-name=oap-server
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_oap_instance_trace_count --instance-name=http://localhost:1234 --service-name=oap-server |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_oap_instance_trace_count --instance-name=http://localhost:1234 --service-name=oap-server
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=meter_oap_instance_metrics_aggregation --labels="L1 aggregation" --instance-name=http://localhost:1234 --service-name=oap-server |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression="meter_oap_instance_metrics_aggregation{_='L1 aggregation'}" --instance-name=http://localhost:1234 --service-name=oap-server
       expected: expected/metrics-has-value-label.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_oap_instance_persistence_prepare_count --instance-name=http://localhost:1234 --service-name=oap-server |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_oap_instance_persistence_prepare_count --instance-name=http://localhost:1234 --service-name=oap-server
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_oap_instance_persistence_execute_count --instance-name=http://localhost:1234 --service-name=oap-server |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_oap_instance_persistence_execute_count --instance-name=http://localhost:1234 --service-name=oap-server
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_oap_jvm_thread_live_count --instance-name=http://localhost:1234 --service-name=oap-server |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_oap_jvm_thread_live_count --instance-name=http://localhost:1234 --service-name=oap-server
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_oap_jvm_thread_runnable_count --instance-name=http://localhost:1234 --service-name=oap-server |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_oap_jvm_thread_runnable_count --instance-name=http://localhost:1234 --service-name=oap-server
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_oap_jvm_class_loaded_count --instance-name=http://localhost:1234 --service-name=oap-server |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_oap_jvm_class_loaded_count --instance-name=http://localhost:1234 --service-name=oap-server
       expected: expected/metrics-has-value.yml
-    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=meter_oap_jvm_class_total_loaded_count --instance-name=http://localhost:1234 --service-name=oap-server |yq e 'to_entries' -
+    - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=meter_oap_jvm_class_total_loaded_count --instance-name=http://localhost:1234 --service-name=oap-server
       expected: expected/metrics-has-value.yml
 
diff --git a/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml b/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
index c360120bcc..a94c3c4ba0 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
+++ b/test/e2e-v2/cases/storage/expected/metrics-has-value-percentile.yml
@@ -13,65 +13,23 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: 0
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 1
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 2
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 3
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-- key: 4
-  value:
-  {{- contains .value }}
-  - key: {{ notEmpty .key }}
-    value:
-      value: 0
-      isemptyvalue: true
-  - key: {{ notEmpty .key }}
-    value:
-      value: {{ ge .value.value 1 }}
-      isemptyvalue: false
-  {{- end }}
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels:
+        {{- contains .metric.labels }}
+        - key: _
+          value: {{ .value }}
+        {{- end}}
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml b/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/storage/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/storage/storage-cases.yaml b/test/e2e-v2/cases/storage/storage-cases.yaml
index 2e7d968753..f7a06f3982 100644
--- a/test/e2e-v2/cases/storage/storage-cases.yaml
+++ b/test/e2e-v2/cases/storage/storage-cases.yaml
@@ -67,83 +67,83 @@ cases:
     expected: expected/metrics-top-service.yml
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics top --name service_sla 5
     expected: expected/metrics-top-service.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_sla --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_cpm --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_resp_time --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_apdex --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_sla --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_sla --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_cpm --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_cpm --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_resp_time --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_apdex --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_apdex --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
   # service instance metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_resp_time --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_resp_time --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_cpm --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_cpm --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_instance_sla --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_instance_sla --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
   # service instance JVM metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_heap --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap_max --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_heap_max --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_noheap --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_noheap --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_live_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_live_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_daemon_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_daemon_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_peak_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_peak_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_runnable_state_thread_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_runnable_state_thread_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_loaded_class_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_class_loaded_class_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_total_loaded_class_count --instance-name=consumer1 --service-name=e2e-service-consumer |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_class_total_loaded_class_count --instance-name=consumer1 --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_heap --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_heap_max --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_heap_max --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_memory_noheap --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_memory_noheap --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_live_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_live_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_daemon_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_daemon_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_peak_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_peak_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_thread_runnable_state_thread_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_thread_runnable_state_thread_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_loaded_class_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_class_loaded_class_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=instance_jvm_class_total_loaded_class_count --instance-name=provider1 --service-name=e2e-service-provider |yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=instance_jvm_class_total_loaded_class_count --instance-name=provider1 --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
   # service endpoint metrics
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-provider | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-provider | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-provider | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-provider
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-consumer | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_cpm --endpoint-name=POST:/users --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-consumer | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_resp_time --endpoint-name=POST:/users --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-consumer | yq e 'to_entries' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_sla --endpoint-name=POST:/users --service-name=e2e-service-consumer
     expected: expected/metrics-has-value.yml
   # service endpoint metrics percentile
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-consumer |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-consumer
     expected: expected/metrics-has-value-percentile.yml
-  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics multiple-linear --name=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-consumer |yq e 'to_entries | with(.[] ; .value=(.value | to_entries))' -
+  - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=endpoint_percentile --endpoint-name=POST:/users --service-name=e2e-service-consumer
     expected: expected/metrics-has-value-percentile.yml
   # Endpoint TopN with service_id
   - query: swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics top --name endpoint_cpm --service-name e2e-service-provider 5
diff --git a/test/e2e-v2/cases/ttl/expected/metrics-has-value.yml b/test/e2e-v2/cases/ttl/expected/metrics-has-value.yml
index 04b077dd98..dc71f56632 100644
--- a/test/e2e-v2/cases/ttl/expected/metrics-has-value.yml
+++ b/test/e2e-v2/cases/ttl/expected/metrics-has-value.yml
@@ -13,13 +13,19 @@
 # See the License for the specific language governing permissions and
 # limitations under the License.
 
-{{- contains . }}
-- key: {{ notEmpty .key }}
-  value:
-    value: 0
-    isemptyvalue: true
-- key: {{ notEmpty .key }}
-  value:
-    value: {{ ge .value.value 1 }}
-    isemptyvalue: false
-{{- end }}
+type: TIME_SERIES_VALUES
+results:
+  {{- contains .results }}
+  - metric:
+      labels: []
+    values:
+      {{- contains .values }}
+      - id: {{ notEmpty .id }}
+        value: {{ .value }}
+        traceid: null
+      - id: {{ notEmpty .id }}
+        value: null
+        traceid: null
+      {{- end}}
+  {{- end}}
+error: null
diff --git a/test/e2e-v2/cases/ttl/ttl-cases.yaml b/test/e2e-v2/cases/ttl/ttl-cases.yaml
index 5f15ad58d9..7646207752 100644
--- a/test/e2e-v2/cases/ttl/ttl-cases.yaml
+++ b/test/e2e-v2/cases/ttl/ttl-cases.yaml
@@ -20,7 +20,7 @@
     - query: |
         curl -s -XPOST http://${sender_host}:${sender_9093}/sendMetrics4TTL/7 > /dev/null;
         sleep 10;
-        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics linear --name=service_resp_time --service-name=e2e-test-dest-service --start="-193h" --end="-191h" |yq e 'to_entries' -
+        swctl --display yaml --base-url=http://${oap_host}:${oap_12800}/graphql metrics exec --expression=service_resp_time --service-name=e2e-test-dest-service --start="-193h" --end="-191h"
       expected: expected/metrics-has-value.yml
     # verify metrics has been deleted
     - query: |